4

我正在尝试将 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 版本。这不是说,没问题吗?

谢谢,莫克斯

更新:这不是 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 ...

4

2 回答 2

2

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

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

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

期待 100-继续

于 2015-11-20T19:03:39.013 回答
1

与此同时,我在 Bing 开发者论坛上得到了答案。似乎微软在某种程度上对 HTTP 响应代码使用了与大多数人不同的语义,并且 505 也可能意味着“您的 SOAP 请求有问题”。原来我没有使用正确的命名空间。修复它们后,请求就顺利通过了。

这是Bing 论坛中的主题链接。

于 2011-02-12T11:10:26.510 回答