Ошибка вызова веб-службы SAP с созданным прокси-сервером SUDZC: CX_ST_MATCH_ELEMENT - PullRequest
0 голосов
/ 11 марта 2012

При попытке вызвать веб-службу SAP SOAP из сгенерированного приложения sudzc отображаются ошибки, которых я не знаю:

SudzCExamples[5192:f803] <?xml version="1.0" encoding="utf-8"?><soap:Envelope     
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:sap-
com:document:sap:soap:functions:mc-style"><soap:Body><ZComUrlGetrecords>
<IYear>2012</IYear></ZComUrlGetrecords></soap:Body></soap:Envelope>


SudzCExamples[5192:f803] <soap-env:Envelope xmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/"><soap-env:Header></soap-env:Header><soap-
env:Body><soap-env:Fault><faultcode>soap-env:Server</faultcode><faultstring 
xml:lang="en">CX_ST_MATCH_ELEMENT:XSLT exception.System expected element 
'IYear'</faultstring><detail><ns:SystemFault   
xmlns:ns="http://www.sap.com/webas/710/soap/runtime/abap/fault/system/">  
<Host>undefined</Host><Component>APPL</Component><ChainedException>
<Exception_Name>CX_SOAP_CORE</Exception_Name><Exception_Text>CX_ST_MATCH_ELEMENT:XSLT 
exception.System expected element 'IYear'</Exception_Text></ChainedException>
<ChainedException><Exception_Name>CX_SXMLP</Exception_Name><Exception_Text>XSLT 
exception</Exception_Text></ChainedException><ChainedException>
<Exception_Name>CX_ST_MATCH_ELEMENT</Exception_Name><Exception_Text>System expected 
element 'IYear': Main Program:/1BCDWB/WSS825E06E4DEC40F9171D| 
Program:/1BCDWB/WSS825E06E4DEC40F9171D| Line: 18| Valid:X</Exception_Text>
</ChainedException></ns:SystemFault></detail></soap-env:Fault></soap-env:Body></soap-
env:Envelope>

2012-03-11 20:09:30.631 SudzCExamples[5192:f803] soap-env:Server CX_ST_MATCH_ELEMENT:XSLT 
exception.System expected element 'IYear'
(null)

Странно то, что в запросе есть элемент IYear. Может кто-нибудь сказать мне, где искать проблему?

1 Ответ

3 голосов
/ 20 марта 2012

Я столкнулся с этой же проблемой вчера и нашел решение после некоторых экспериментов.Первым делом я использовал мой клиент SoapUI для успешного выполнения запроса.SoapUI поставляется с бесплатной пробной версией, и даже если вы не используете бесплатную пробную версию, вы все равно можете использовать ее для доступа к веб-службе без регистрации.Я использовал xml из успешного запроса, который я сделал, чтобы сравнить с запросом, который делал SudzC.Они различаются по нескольким причинам, и способ, которым SudzC формирует запрос, недостаточен.

Я предлагаю вам сравнить два запроса и изменить запрос SudzC в соответствии с запросом SoapUI.Вы можете сделать это, отредактировав исходный код Soap, который вам предоставляет SudzC. Этот исходный код находится, в частности, в файле Soap.m в функции createEnvelope.

Также, если ваши запросы имеют пустой заголовок, SudzC не включает часть заголовка запроса.Жесткий код в пустом заголовке после части пространства имен конверта.Делая все это, я решил эту проблему.

...