SAPが提供するWebサービスを呼び出して顧客データを更新しようとしました。私はSoapUIを使用して接続をテストし、実際の要求は必要でした。すべてがうまく働いた、これは電子メールアドレスを変更するためのSOAPUI要求がどのように見えるかです:WSDLモードを使用したSoapコールでは省略可能なパラメータ
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">
<soapenv:Header/>
<soapenv:Body>
<urn:Ze12RfcMaintainCustomer>
<!--Optional:-->
<PiTEmail>
<!--Zero or more repetitions:-->
<item>
<StdNo>X</StdNo>
<EMail>[email protected]</EMail>
</item>
</PiTEmail>
<!--Optional:-->
<PiTEmailX>
<!--Zero or more repetitions:-->
<item>
<StdNo>X</StdNo>
<EMail>X</EMail>
</item>
</PiTEmailX>
<PieKunnr>4711</PieKunnr>
</urn:Ze12RfcMaintainCustomer>
</soapenv:Body>
</soapenv:Envelope>
Webサービスは、全体の多くのパラメーターを受け入れますが、それらのすべてがオプションであり、この作業のために必要ではありません。
今私はWSDLモードでのSoapClientとPHPで同じ要求を実行しようとすれば、私は例えば、要求に含まれていないすべてのオプションパラメータのエラーを取得:
SOAP-ERROR: Encoding: object hasn't 'EmailSrch' property
これは私ですコード(簡体字):
$params = array(
'PieKunnr' => 4711,
'PiTEmail' => array(
'item' => array(
'StdNo' => 'X',
'EMail' => '[email protected]',
),
),
'PiTEmailX' => array(
'item' => array(
'StdNo' => 'X',
'EMail' => 'X',
),
),
);
$result = $service->Ze12RfcMaintainCustomer($params);
すべてのオプションパラメータを要求に入れると、それは機能します。
SoapClientリクエストでオプションのパラメータを省略できないのはなぜですか?
EmailSrchエンティティを宣言するWSDLのビットを投稿できますか? – benjy