我在BizTalk 2010中调用SAP Web服务(HTTPS)。我已使用consume wcf service wizard生成了模式。当我通过传递请求的模式实例来调用webservice时,我收到以下错误消息:
<SOAP:Fault xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>SOAP:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
<s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
<context>XIAdapter</context>
<code>ADAPTER.JAVA_EXCEPTION</code>
<text><![CDATA[ com.sap.aii.af.service.cpa.CPAException: com.sap.aii.af.service.cpa.impl.exception.CPALookupException: Couldn't retrieve inbound binding for the given P/S/A values: FP=;TP=;FS=null;TS=null;AN=null;ANS=null; at com.sap.aii.af.service.cpa.impl.lookup.CommonLookup.checkForError(CommonLookup.java:53) at com.sap.aii.af.service.cpa.InboundRuntimeLookup.getBinding(InboundRuntimeLookup.java:411) at com.sap.aii.af.service.cpa.impl.lookup.AbstractLookupManager.getBinding(AbstractLookupManager.java:714) at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:427) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) ….. ……
]]></text>
</s:SystemError>
</detail>
</SOAP:Fault>
我尝试使用SOAPUI工具调用webservice,并收到正确的响应。我跟踪了使用fiddler从BizTalk sendPort(使用wcfBasicHTTP绑定调用webservice overHTTP-soap)的请求,请求看起来很好并且在SOAPUI中工作。我不知道为什么我在BizTalk中收到这个特殊的soap故障。 任何帮助表示赞赏 感谢。
BizTalk Fiddler转储(重新排列HTTP标头顺序)
POST localhost:8888 HTTP/1.1
Accept-Encoding: gzip, deflate
Content-Type: text/xml; charset=utf-8
SOAPAction: "sap.com/xi/WebService/soap1.1";
Content-Length: 2296
Host: localhost:8888
Expect: 100-continue
Connection: Keep-Alive
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ns0:z xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
........
</ns0:z>
</s:Body>
</s:Envelope>
SOAPUI Fiddler Dump
POST localhost:8888 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "sap.com/xi/WebService/soap1.1";
Content-Length: 2417
Host: localhost:8888
Proxy-Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<SOAP-ENV:Envelope xmlns:SOAP-ENV="schemas.xmlsoap.org/soap/envelope/";
xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns0:z xmlns:ns0="urn:sap-com:document:sap:rfc:functions">
....
</ns0:z>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
答案 0 :(得分:0)
我看不到任何明显的东西,可能除了charset Content Type标题中的utf-8的shoutcase之外。
我认为肥皂体有效负载(........)是相同的 - 您可以检查消息中是否指定了肥皂动作以及标题 - 我不确定SAP是否Web服务是SOAP 1.1或1.2 WCF Soap Actions in HTTP header or SOAP header?
尝试一种可能的方法是在发送端口上使用XmlTransmit发送管道 尝试保留BOM(即在有效负载上添加/删除UTF BOM),并尝试将目标字符集设置为shoutcase UTF-8。
答案 1 :(得分:-2)
问题已经解决。我将端点的url修改为SOAPUI使用的url。