0

生成されたsudzcアプリからSAPSOAPWebサービスを呼び出そうとすると、不明なエラーが表示されます。

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要素が含まれているように見えます。誰かが問題を検索する場所を教えてもらえますか?

4

1 に答える 1

3

私は昨日この同じ問題に遭遇し、いくつかの実験の後に解決策を発見しました。私が最初にしたことは、SoapUIクライアントを使用してリクエストを正常に行うことでした。SoapUIには無料トライアルが付属しており、無料トライアルを使用しなくても、登録しなくてもWebサービスにアクセスできます。成功したリクエストのxmlを使用して、SudzCが行っていたリクエストと比較しました。それらはいくつかの点で異なり、SudzCがリクエストを形成する方法は十分ではありません。

2つのリクエストを比較し、SudzCのリクエストをSoapUIリクエストと一致するように変更することをお勧めします。これを行うには、SudzCから提供されたSoapソースコードを編集します。このソースコードは、特にcreateEnvelope関数のSoap.mファイルにあります。

また、リクエストに空のヘッダーがある場合、SudzCにはリクエストのヘッダー部分が含まれません。エンベロープの名前空間部分の後の空のヘッダーにハードコードします。これをすべて行うことで、私にとってこの正確な問題が修正されました。

于 2012-03-20T18:01:18.903 に答える