java - JAX-WS 发出 GET,然后发出 GET 和 POST

标签 java web-services jakarta-ee jax-ws

我使用 wsimport 生成的类编写了一个 JAX-WS 客户端来调用 Web 服务。为了在本地测试我的客户端,我编写了 Web 服务的实现并在本地发布并调用它。一切都按预期进行。

我注意到的一件事是,我的客户端连接到端点并发出一个 GET,然后针对寻找 wsdl 的端点发出另一个 GET 连接,最后在同一连接中使用我的有效负载发出 POST。

这是 tcpmon 输出(经过编辑以保护有罪者):

GET /someWS HTTP/1.1
User-Agent: Java/1.7.0_03
Host: 127.0.0.1:9877
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

----------------------------------

GET /someWS?wsdl HTTP/1.1
User-Agent: Java/1.7.0_03
Host: 127.0.0.1:9877
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

POST /someWS HTTP/1.1
Accept: text/xml, multipart/related
Content-Type: text/xml; charset=utf-8
SOAPAction: "document/http://someUrl"
User-Agent: JAX-WS RI 2.2.4-b01
Host: 127.0.0.1:9877
Connection: keep-alive
Content-Length: 610

<Valid Soap message here/>

这是标准行为还是我搞砸了?我正在使用 JAX-WS RI 2.2。这在本地工作得很好,但是某个生产 WS 对最初的 GET 请求非常不满意并抛出 500,我希望我可以抑制 GET 请求并直接跳到 POST。

最佳答案

客户端没有在本地缓存 wsdl 文件,因此您将在每次 POST 之前看到一个 GET 请求。 GET 用于获取 wsdl 文件,POST 用于实际的 Web 服务请求。要求客户端在本地缓存wsdl并引用它。

关于java - JAX-WS 发出 GET,然后发出 GET 和 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462688/

相关文章:

web-services - 大型 "in-house"企业 Web 应用程序是否在 LAN 上通过 SSL 运行?

c# - 通过 ANDROID APP 使用本地托管的 SOAP 服务

java - Servlet 响应方法 addHeader 和 setHeader 有什么区别?

java - 结果集查询

java - 从 JAVA MySQLdb 导入调用 Python 脚本

java - 从 zipFile 的 byteArray 获取 XML 数据

java - 使用 JDK 11+ 运行 JavaFX 应用程序

java - 如何在 Java 中创建大尺寸自定义游标?

java - 在 Google App-Engine JAVA 中将文本转换为字符串,反之亦然

java - 无法从第三方 Web 服务获得响应