Ошибка при вызове REST из кода, когда с почтальоном с тем же конфигом все ок - PullRequest
0 голосов
/ 04 октября 2019

В последнее время я сталкиваюсь с проблемой различного поведения, когда я звоню через Почтальона и программно с той же конфигурацией. Во время вызова из кода я получаю 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 Удачного кодирования!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...