2017-08-24 98 views
0

我成功地运用了weimport行家工具生成针对客户端WSD,这是由.NET SOAP服务SOAP连接重置

,当我做从我的Java客户端代码的请求支持的Jar文件,我得到的以下日志

Accept: text/xml, multipart/related 
Content-Type: multipart/related;start="<rootpart*[email protected]>";type="application/xop+xml";boundary="uuid:dbea05e3-9997-4835-965c-02b1ed77e6b6";start-info="text/xml" 
SOAPAction: "http://xxx/2013/xxx/RemotexxxService/UpdateProfile" 
User-Agent: JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b 
--uuid:dbea05e3-9997-4835-965c-02b1ed77e6b6 
Content-Id: <rootpart*[email protected]> 
Content-Type: application/xop+xml;charset=utf-8;type="text/xml" 
Content-Transfer-Encoding: binary 

,我收到以下错误

javax.xml.ws.WebServiceException: java.net.SocketException: Connection reset 
    at com.sun.xml.ws.transport.http.client.HttpClientTransport.readResponseCodeAndMessage(HttpClientTransport.java:210) 
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.createResponsePacket(HttpTransportPipe.java:241) 
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:232) 
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:145) 
    at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:110) 
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136) 
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050) 
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019) 
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877) 
    at com.sun.xml.ws.client.Stub.process(Stub.java:463) 
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:191) 
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) 
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:92) 
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:161) 

但是当我复制过去的整个SOAP消息,并尝试在SOAPUI,它的工作..

我已经注意到了SOAP UI都有不同的HTTP头产生

POST http://coreservices-uat.legendonlineservices.co.uk/IRemoteContactUpdateService.svc HTTP/1.1 
Accept-Encoding: gzip,deflate 
Content-Type: text/xml;charset=UTF-8 
SOAPAction: "http://Infrastructure/2013/ContactPhoto/RemoteContactUpdateService/UpdateProfile" 
Content-Length: 1761 
Host: coreservices-uat.legendonlineservices.co.uk 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 

我想不出之间的Java版本或差异Apache的HttpClient的或Jasws落实将使

难道有什么区别内容类型?我的意思是在SOAP UI中,内容类型是 与Java客户端不同

是否可以在wsdl中引起此问题的以下定义?

<wsp:Policy wsu:Id="BasicHttpBinding_RemoteContactUpdateService_policy"> 
<wsp:ExactlyOne> 
<wsp:All> 
<wsoma:OptimizedMimeSerialization xmlns:wsoma="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization"/> 
</wsp:All> 
</wsp:ExactlyOne> 
</wsp:Policy> 

注:我是发送相同的XML消息使用相同的Java代码前两天的服务器,它总是工程....这是一个最新的错误。

回答

1
在我的情况

,web服务提供商从https改为端点到http 也是在服务器端的HTTPS连接器被禁用

发送MTOM通过HTTP aparently引起的问题在我的情况

的解决方法是从我JAXWS客户端

Binding binding = bp.getBinding(); 
SOAPBinding sb = (SOAPBinding)binding; 
sb.setMTOMEnabled(false); 
在此之后

禁用MTOM,客户请求的内容类型从

改变
Content-Type: multipart/related;start="<rootpart*[email protected]>";type="application/xop+xml";boundary="uuid:dbea05e3-9997-4835-965c-02b1ed77e6b6";start-info="text/xml" 
Content-Type: application/xop+xml;charset=utf-8;type="text/xml" 

Content-Type: text/xml;charset=UTF-8 

然后我把它通过HTTP,问题就迎刃而解了。