Ben müşteri verilerini güncellemek için SAP tarafından sağlanan bir webcoder arama deneyin. I bağlantısı ve gerekli olan gerçek istek test etmek için SoapUI kullanılır. Her şey bu e-posta adresini değiştirmek için SoapUI istek gibi görünüyor nasıl, iyi çalıştı:
<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>me@example.com</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>
Webcoder daha bir sürü parametre kabul eder, ama bunların hepsi isteğe bağlı ve bu görev için gerekli değildir.
Ben WSDL modunda bir SoapClient PHP ile aynı isteği yapmak için çalışırsanız Şimdi, isteği, örneğin dahil her isteğe bağlı parametre için bir hata alıyorum:
SOAP-ERROR: Encoding: object hasn't 'EmailSrch' property
Bu (basitleştirilmiş) benim kod:
$params = array(
'PieKunnr' => 4711,
'PiTEmail' => array(
'item' => array(
'StdNo' => 'X',
'EMail' => 'me@example.com',
),
),
'PiTEmailX' => array(
'item' => array(
'StdNo' => 'X',
'EMail' => 'X',
),
),
);
$result = $service->Ze12RfcMaintainCustomer($params);
Ben istek içine tüm isteğe bağlı parametreleri koyarsanız, o çalışır.
Neden isteğe bağlı parametreleri SoapClient istekleri ihmal edilemez?