如何避免“505:不支持HTTP版本”错误?

时间:2010-08-08 16:35:58

标签: java web-services jax-ws bing-api http-status-code-505

我正在尝试使用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 btw ...

2 个答案:

答案 0 :(得分:2)

您是否尝试将以下内容添加到app.config或web.config?

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

显然,在请求标头中发送Expect: 100-continue会导致抛出“505:HTTP Version not supported”错误。

Expect 100-continue

答案 1 :(得分:1)

与此同时,我在Bing开发者论坛中得到了答案。似乎微软对HTTP响应代码使用的语义与大多数不同,而505也可能意味着“SOAP请求有问题”。事实证明我没有使用正确的命名空间。修好后,请求就完成了。

以下是Bing论坛中的link to the thread