В последнее время я сталкиваюсь с проблемой различного поведения, когда я звоню через Почтальона и программно с той же конфигурацией. Во время вызова из кода я получаю 400 неправильных запросов, и моя отладка не показала явных проблем.
Вот что я делаю из почтальона: я звоню https://api.cloud.wowza.com/api/v1.3/live_streams/{streamId}/start с предварительно установленными заголовками wsc-api-key и wsc-access-key и методом PUT, и все идет гладко.
Что я делаю в коде:
Я установил HttpEntity с заголовками и типом содержимого json
@Bean
public HttpEntity<String> httpEntity() {
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON_UTF8, MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("wsc-api-key", wscApiKey);
headers.add("wsc-access-key", wscAccessKey);
return new HttpEntity<>("parameters", headers);
}
создал простой метод с методом PUT httpвведите
public Optional<LiveStreamWrapper> startStream(String streamId) {
String wowzaCloudStreamEndpoint = wowzaCloudUrl + "/" + streamId + "/start";
logger.info("Wowza endpoint :" + wowzaCloudStreamEndpoint);
ResponseEntity<LiveStreamWrapper> liveStreamWrapperResponseEntity = restTemplate.exchange(wowzaCloudStreamEndpoint, HttpMethod.PUT, entity, LiveStreamWrapper.class);
return Optional.ofNullable(liveStreamWrapperResponseEntity.getBody());
}
И здесь я получаю 400 плохих запросов, даже при том, что все одинаково. Я довольно долго над этим разбираюсь, может кто-нибудь дать подсказку?
UPD: запрос почтальона
{
"name": "stream start",
"request": {
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
},
{
"key": "wsc-api-key",
"value": "{{wsc-api-key}}",
"type": "text"
},
{
"key": "wsc-access-key",
"value": "{{wsc-access-key}}",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "https://api.cloud.wowza.com/api/v1.3/live_streams/pt4v2pf1/start",
"protocol": "https",
"host": [
"api",
"cloud",
"wowza",
"com"
],
"path": [
"api",
"v1.3",
"live_streams",
"pt4v2pf1",
"start"
]
}
},
"response": []
},
UPD: после того, как я следовал совету @Isankповедение изменено на HttpClientErrorException $ UnprocessableEntity: 422 Unprocessable Entity
Теперь конфигурация HttpEntity выглядит следующим образом
@Bean
public HttpEntity<String> httpEntity() {
MultiValueMap<String, String> headers = new HttpHeaders();
headers.set("Content-Type", "application/json");
headers.set("wsc-api-key", wscApiKey);
headers.set("wsc-access-key", wscAccessKey);
return new HttpEntity<>(headers);
}
UPD: я решил все мои проблемы, спасибо всем! Чтобы решить Unprocessable entity, я следовал советам из этого шага: RestTemplate -> Exchange создает: 422 Unprocessable Entity Удачного кодирования!