2015-10-06 91 views
0

我一直在搜索无处不在的如何使用Java中的C#/ ASP.NET构建的SOAP API。我目前正在为我的项目使用Spring/Spring Web,并且我希望使用带有Spring-WS的SOAP API来运行。在Java中使用SOAP API

信封是错误地生成,并且当我发送请求它只是指出 “500内部服务器错误”

在它具有SOAP-ENV顶部的名称空间:信封是不正确的,并使用在WSDL时SoapUI的数据是以soap:Envelope的形式呈现的,所以我不确定这是否是编码到XML字符串的问题。

我送这样的:

TestRequest test = WS_CLIENT_FACTORY.createTestRequest(); 
    test.setData(1); 

    JAXBElement<TestRequest> req = WS_CLIENT_FACTORY.createTestRequest(test); 

    getWebServiceTemplate().marshalSendAndReceive(req); 

这发出了请求,但输出,实际上是发送被错误地放在一起的XML数据和服务器似乎并不喜欢它。

我不确定C#/ ASP SOAP API服务器的处理方式与Java的方式不同吗?如果有人能够启发我,请帮助我!

+1

SOAP是一个xml通信协议。 C#和Java都处理它一样。最好的建议是可以给你的是验证你对预期的模式所期望的响应。 – Reinard

+1

用于创建SOAP API的语言不应该对使用Java的消费产生影响。我建议你首先尝试一下soapUI,看看它的行为,然后比较你的代码生成的请求与它的对比。 – yogidilip

回答

0

我回到使用基本的JAX-WS作为Java的一部分,并使用“wsimport”工具。事实证明,我之前做过这件事的时候,它已经丢失了SOAP Headers,所以你可以使用下面的命令附带的头文件实际生成请求。

wsimport -keep -Xnocompile -XadditionalHeaders -extension 

虽然这不是使用Spring的消费SOAP API的实现,但它似乎工作得更好。