Почему ответ HTTP HTTP 406 несмотря на то, что заголовок подтверждения не прошел? - PullRequest
0 голосов
/ 11 ноября 2019

Мой API вызывает другую службу с URL

https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID

, и эта служба возвращает мне HTTP-код ответа 406 , что недопустимо.

UtilHelper: 691 - Исключительная ситуация при создании идентификатора: сервер вернул код ответа HTTP: 406 для URL: https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID

Я не передаю заголовок accept в моем запросе. Что может быть другой причиной, по которой я это получаю?

Ответы [ 2 ]

1 голос
/ 11 ноября 2019

Откровенно говоря, ответ 406 может быть возвращен по любой причине ... или вообще без причины.

Согласно спецификации HTTP 1.1 (раздел 6.5.6)) он должен быть возвращен, если один из этих заголовков запрашивает вывод в представлении, которое сервер не может предоставить:

  • Accept
  • Accept-Charset
  • Accept-Encoding
  • Accept-Language

Если реализация сервера соответствует спецификации, тело ответа должно перечислить представления, которые оно может предоставить. (Посмотрите на тело ответа, чтобы увидеть, говорит ли оно что-нибудь.)

Что еще это может быть?

  • Возможно, сервер сообщает вам, что вам нужно для предоставления заголовка "accept".

  • Возможно, сервер дает намеренно вводящий в заблуждение ответ, потому что считает, что вы злоупотребляете API.

Но я действительно догадываюсь. Как я уже говорил в начале ... это может быть что угодно.

Мой совет - внимательно прочитать документацию по API и спросить людей, которые запускают сервер, что вы делаете.

0 голосов
/ 12 ноября 2019

В моем случае, когда я проверял код, заголовок accept был жестко закодирован в самом коде.

HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.setRequestProperty("Accept", "application/xml");
            connection.setRequestProperty("Content-Type", "application/json");

Поэтому, когда я удалил / закомментировал код, служба перестала выдавать 406.: -)

...