Задаване на тип съдържание на заглавка на заявка на json в шаблон за възстановяване на Spring Framework

Уча Spring Framework, за да създам клиент на REST уеб услуга, която използва основно удостоверяване и обменя JSON. След много търсене в мрежата написах някакъв код, който работи (по-долу), но сега получавам грешка „Неподдържан тип медия“, тъй като заявките се изпращат с Content-Type text/plain, а не application/json. Не намерих нищо в мрежата, което да показва как да задам Content-Type в заглавката на заявката (без да се изгубя напълно в плевелите). Моят код е:

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

Всякакви насоки ще бъдат много оценени.

Благодаря, Джордж


person user2752012    schedule 02.04.2015    source източник
comment
Разбрах, че част от кода не е правилен. Изпращах POST заявка с JSON тяло. Ето правилния код.   -  person user2752012    schedule 02.04.2015
comment
Редактирах оригиналния въпрос, за да коригирам кода. Все още се уча как да използвам stackoverflow...   -  person user2752012    schedule 02.04.2015
comment
помага ли stackoverflow.com/questions/10263854/   -  person Diptopol Dam    schedule 02.04.2015


Отговори (1)


можете да опитате да използвате всеки метод от кода по-долу

1

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

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

2

RequestEntity<String> requestEntity = RequestEntity .post(new URL(attributeLookupUrl).toURI()) .contentType(MediaType.APPLICATION_JSON) .body(postBodyJson); 
restTemplate.exchange(requestEntity, responseClass);

3

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

// if you need to pass form parameters in request with headers.
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("username", userName);
map.add("password", password);

HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
ResponseEntity<TokenVO> responses = restTemplate.postForEntity(URL, request, responseClass);
person ManojP    schedule 02.04.2015
comment
Това може да е нова функция, но вече можете да направите и следното: RequestEntity‹String› requestEntity = RequestEntity .post(нов URL(attributeLookupUrl).toURI()) .contentType(MediaType.APPLICATION_JSON) .body(postBodyJson); restTemplate.exchange(requestEntity, responseClass); - person gaoagong; 16.01.2019