Как избежать ошибки "505: версия HTTP не поддерживается"?

Я пытаюсь использовать Bing SOAP API для простого поискового запроса. Но теперь, когда я наконец понял, как отправить запрос с использованием JAX-WS, я снова застрял. Я получаю ответ com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 505: HTTP Version not supported когда я отправлю запрос. Может кто-нибудь мне помочь?

Я использую динамический вызов с JAX-WS 2.0, если это имеет какое-либо значение.

Dispatch<SOAPMessage> dispatch = service.createDispatch(
    portName, SOAPMessage.class, Service.Mode.MESSAGE);
MessageFactory messageFactory = ((SOAPBinding) dispatch.getBinding())
    .getMessageFactory();
SOAPMessage request = messageFactory.createMessage();
// Add content to the request
SOAPMessage response = dispatch.invoke(request);

Wireshark сообщает мне, что заголовок запроса содержит POST /soap.asmx HTTP/1.1 и ответ возвращается также с версией HTTP/1.1. Разве это не значит, все в порядке?

Спасибо, moxn

ОБНОВЛЕНИЕ: Это не специфическая ошибка JAX-WS. Я реализовал связь через Commons HTTPClient и до сих пор получаю те же 505.

Следуя заголовкам из запроса HTTPClient:

Content-Length: 435
Content-Type: text/xml
Host: api.bing.net:80
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.0.1 (java 1.5)
Expect: 100-Continue

ОБНОВЛЕНИЕ: Это также не работает с HTTP/1.0 кстати...

2 ответа

Решение

Тем временем я получил свой ответ на форуме разработчиков Bing. Кажется, что Microsoft как бы использует семантику для кодов ответов HTTP, отличную от большинства, и 505 также может означать "Что-то не так с вашим SOAP-запросом". Оказывается, я не использовал правильные пространства имен. После их исправления запрос прошел нормально.

Вот ссылка на ветку на форуме Bing.

Вы пытались добавить следующее в app.config или web.config?

<configuration>
  <system.net>
    <settings>
      <servicePointManager expect100Continue="false" />
    </settings>
  </system.net>
</configuration>

Очевидно отправка Expect: 100-continue в заголовке запроса возникает ошибка "505: версия HTTP не поддерживается".

Ожидайте 100-продолжайте

Другие вопросы по тегам