0

パラメータ p_oRSMasterFields がリクエストに含まれないのはなぜですか? このリクエストは SOAP サーバーから送り返されたのですか? サーバーがその特定のパラメーターのデータを拒否し、単に空白にしている可能性がありますか?

$client = new SoapClient($wsdl, $options);     

$client->UpdateCustMaster(array('p_iCompanyID' => 100, 
                               'p_lAccountNum' => 18087,   
                               'p_sSysUser' => 'WebTest',     
                               'p_oRSMasterFields' => 'THIS IS A TEST',
                               'p_lErrorCode' => 0
                                ));  

echo "REQUEST:\n" . $client->__getLastRequest() . "\n";  



REQUEST:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.acme.com/">
<SOAP-ENV:Body>
    <ns1:UpdateCustMaster>
        <ns1:p_iCompanyID>100</ns1:p_iCompanyID>
        <ns1:p_lAccountNum>18087</ns1:p_lAccountNum>
        <ns1:p_sSysUser>WebTest</ns1:p_sSysUser>
        <ns1:p_oRSMasterFields/>
        <ns1:p_lErrorCode>0</ns1:p_lErrorCode>
    </ns1:UpdateCustMaster>
</SOAP-ENV:Body>

4

1 に答える 1

1

そのアイテムの WSDL は次のようになります。

<s:complexType>
  <s:sequence>
    <s:any namespace="acme.com/EnergyAPI/CustomerMaint/DSCustomerFields.xsd"/>
  </s:sequence>
</s:complexType>

したがって、そこに少なくとも 1 つのany要素を指定する必要があります。

$client->UpdateCustMaster(array('p_iCompanyID' => 100, 
                               'p_lAccountNum' => 18087,   
                               'p_sSysUser' => 'WebTest',     
                               'p_oRSMasterFields' => array('any' => 'THIS IS A TEST'),
                                                      ################################
                               'p_lErrorCode' => 0
                                ));

SoapClientバックグラウンドで行われているのは、配列の形式で渡された情報をPHPクラスが WSDL で指定された型にマップすることです。any元のものには要素/メンバーがなかったため、空でした。

于 2012-05-31T20:31:50.760 に答える