java - 有没有Java API来捕获请求和响应SOAP信封?

标签 java web-services soap jakarta-ee webservices-client

我可以使用 Web 服务客户端类来获取结果,但我想要 JavaSE 程序中的完整 SOAP 消息,而不是文本结果。我怎样才能做到这一点?有什么想法吗?

最佳答案

是的。
使用Dispatch<Source>处理 SOAP 消息 JAX-WS Dispatch .
示例
免责声明:甚至没有尝试编译代码:

    //xmlString has the xml message to send to the web service  
    StreamSource xmlMsg = new StreamSource(new StringReader(xmlString));   
    //Create URL of web service. Place your URL for WSDL
    URL wsdlURL = new URL("http://10.5.2.10:8080/path/service?wsdl");  
    QName serviceName = new QName("http://example.com",  "TrivialWebService");  
    Service s = Service.create(wsdlURL, serviceName);  
    QName portName = new QName("http://example.com", "TrivialWebServicePort");  
    //Service.Mode.MESSAGE works on SOAP msg (as opposed to Service.Mode.PAYLOAD)
    Dispatch<Source> dispatch = createDispatch(portName,  
                                                      Source.class,  
                                                      Service.Mode.MESSAGE);  
    //Send request
    Source reply = dispatch.invoke(xmlMsg);  
    DOMResult domResponse = new DOMResult();
    Transformer trans = TransformerFactory.newInstance().newTransformer();
    trans.transform(reply, domResponse); 
    //Now use DOM APIs

您还可以指定是否要处理 HTTP 有效负载(作为 XML),即 SOAP 信封或 SOAP 有效负载,即响应。
您将编写代码来处理原始 XML(例如使用 DOM)。
如果您使用 JAX-WS 或 CXF,则可以使用此 api。
对于 AXIS2,也可以使用 XML。只是一些特定的 api
当然还有SAAJ你可以使用。

关于java - 有没有Java API来捕获请求和响应SOAP信封?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6560669/

相关文章:

xml - Grails 错误 : invalid XML character (Unicode: 0x5c)

c# - 在 asp.net 中自动完成选择多个标签

php - 并行发出 7 个 soap api 请求的最快或最可靠的方法

java - 如何使用 JAX-WS 在 AXL Java 客户端中使用 GetLineReq

java - 如何处理 cxf/camel 生产者模板中的关闭/不可用端点

java - 在子类的构造函数中注册监听器

java - 在eclipse中添加maven项目构建到tomcat

java - Glassfish + Spring

java - maven-war-plugin 和 Spring JavaConfig

java - Spring Controller 重定向到另一个模块