title: Setting request header content-type to json in Spring Framework resttemplate
body: <p>I'm learning Spring Framework to create a client of a REST web service that uses basic authentication and exchanges JSON.  After much searching on the web, I wrote some code that worked (below), but now I'm getting an "Unsupported Media Type" error because the requests are sent with Content-Type text/plain rather than application/json.  I've found nothing on the web that shows how to set Content-Type in the request header (without getting completely lost in the weeds).  My code is:</p>
  
  <pre><code>import org.apache.http.auth.AuthScope;
  import org.apache.http.auth.UsernamePasswordCredentials;
  import org.apache.http.client.HttpClient;
  import org.apache.http.impl.client.BasicCredentialsProvider;
  import org.apache.http.impl.client.HttpClientBuilder;
  import org.springframework.http.client.ClientHttpRequestFactory;
  import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
  import org.springframework.web.client.RestTemplate;
  
  ...
  
  BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();
  credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("login", "password"));
  HttpClient httpClient = HttpClientBuilder.create().setDefaultCredentialsProvider(credentialsProvider).build();
  ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
  
  RestTemplate restTemplate = new RestTemplate(requestFactory);
  String url = "http://host:8080/path/";
  String postBody = getPostInput("filename");
  jsonString = restTemplate.postForObject(path, postBody, String.class);
  </code></pre>
  
  <p>Any guidance would be greatly appreciated.</p>
  
  <p>Thanks,
  George</p>