получать исключение мыла при вызове веб-службы SAP (HTTPS) в BizTalk 2010 с использованием WSBasicHTTPBinding

Я вызываю веб-службу SAP (HTTPS) в BizTalk 2010. Я создал схему с помощью мастера использования службы wcf. Когда я вызываю веб-службу, передавая запрошенный экземпляр схемы, я получаю следующее сообщение об ошибке:

<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 и получил правильный ответ. Я отследил запрос, исходящий из BizTalk sendPort (вызов веб-службы overHTTP-soap с использованием привязки wcfBasicHTTP) с помощью fiddler, запрос выглядит нормально и работает в SOAPUI. Я понятия не имею, почему я получаю именно эту ошибку мыла в BizTalk. Любая помощь приветствуется, спасибо.

BizTalk Fiddler Dump (изменен порядок заголовков 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

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>

person user1321340    schedule 09.04.2012    source источник
comment
Не могли бы вы опубликовать 2 сырых запроса Fiddler (рабочий SoapUI и неудачный BizTalk)? Спасибо   -  person StuartLC    schedule 09.04.2012
comment
Следующее - это необработанный запрос, отслеживаемый fiddler из формы biztalk: POST localhost: 8888 HTTP / 1.1 Content-Type: text / xml; charset = utf-8 SOAPAction: sap.com/xi/WebService/soap1.1 Хост: localhost: 8888 Content-Length: 2296 Expect: 100-continue Accept-Encoding: gzip, deflate Connection: Keep-Alive ‹s: Envelope xmlns: s = schemas.xmlsoap.org/soap/envelope/ xmlns: ns0 = urn: sap-com: document: sap: rfc: functions ›........‹ / ns0: z ›‹ / s: Body ›‹ / s: Envelope ›   -  person user1321340    schedule 09.04.2012
comment
Ниже приведен необработанный запрос от SOAPUI к скрипачу: POST localhost: 8888 HTTP / 1.1 Accept-Encoding: gzip, deflate Content- Тип: 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 ›   -  person user1321340    schedule 09.04.2012


Ответы (2)


Я не вижу ничего явно очевидного, возможно, кроме символа utf-8 в заголовке типа содержимого charset.

И я предположил, что полезные нагрузки мыльного тела (........) идентичны - вы можете проверить, указано ли действие Soap в сообщении, а также в заголовке - я не уверен, что веб-служба SAP SOAP 1.1 или 1.2 Действия WCF Soap в заголовке HTTP или заголовке SOAP?

Один из возможных способов попробовать - использовать конвейер отправки XmlTransmit на вашем порту отправки и поэкспериментировать с Preserve BOM (т.е. добавить / удалить UTF BOM в полезной нагрузке), а также попробовать целевую кодировку, установленную для shoutcase UTF-8.

В крайнем случае, вместо использования веб-служб, попробуйте службу адаптера потребления для SAP - см. здесь и здесь

person StuartLC    schedule 09.04.2012

Проблема решена. Я изменил URL-адрес конечной точки на тот, который использовался SOAPUI.

person user1321340    schedule 11.04.2012
comment
Как вы это решили ?? Не могли бы вы рассказать нам, каков был исходный URL-адрес и конечный URL-адрес конечной точки? Какова основная причина ошибки и как ее предотвратить? - person sudokai; 16.06.2015