2015-04-02 11 views
7

Uczę Spring Framework, aby utworzyć klienta usługi sieciowej REST, która używa podstawowego uwierzytelniania i wymienia JSON. Po wielu poszukiwaniach w Internecie napisałem kod, który działał (poniżej), ale teraz otrzymuję komunikat "Nieobsługiwany typ nośnika", ponieważ żądania są wysyłane z tekstem typu treści/zwykły zamiast z aplikacji/json. Nie znalazłem nic w Internecie, które pokazuje, jak ustawić Content-Type w nagłówku żądania (bez całkowitego zagubienia w chwastach). Mój kod to:Ustawianie nagłówka typu żądania na json w Spring Framework resttemplate

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); 

Wszelkie wskazówki będą mile widziane.

Dzięki, George

+0

zdałem sobie sprawę, że część kodu nie jest poprawna. Wysyłałem żądanie POST z treścią JSON. Oto poprawny kod. – user2752012

+0

Edytowałem oryginalne pytanie, aby poprawić kod. Nadal uczenie się używania stackoverflow ... – user2752012

+0

czy to pomaga? http://stackoverflow.com/questions/10263854/java-httpclient-changing-content-type –

Odpowiedz

21

można spróbować użyć poniżej kod

HttpHeaders headers = new HttpHeaders(); 
headers.setContentType(MediaType.APPLICATION_JSON); 

HttpEntity<String> entity = new HttpEntity<String>(postBodyJson ,headers); 
restTemplate.put(uRL, entity); 
Powiązane problemy