2013-07-17 41 views
2

當我通過nu soap客戶端調用soap web服務時,我遇到了一個問題,我嘗試使用「Storm_r1.1-Adarna」工具併成功,但不能在php代碼中嘗試。 請參閱以下細節:如何通過nusoap構造params請求

一個例子請求消息是這樣的:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:ns="http://www.kiala.com/schemas/psws/1.0"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <ns:createOrder reference="260778"> 
      <identification> 
       <sender>5390a7006cee11e0ae3e0800200c9a66</sender> 
       <hash>831f8c1ad25e1dc89cf2d8f23d2af...fa85155f5c67627</hash> 
       <originator>VITS-STAELENS</originator> 
      </identification> 
      <delivery> 
       <from country="ES" node=""/> 
       <to country="ES" node="0299"/> 
      </delivery> 
      <parcel> 
       <description>Zoethout thee</description> 
       <weight>0.100</weight> 
       <orderNumber>10K24</orderNumber> 
       <orderDate>2012-12-31</orderDate> 
      </parcel> 
      <receiver> 
       <firstName>Gladys</firstName> 
       <surname>Roldan de Moras</surname> 
       <address> 
        <line1>Calle General Oraá 26</line1> 
        <line2>(4º izda)</line2> 
        <postalCode>28006</postalCode> 
        <city>Madrid</city> 
        <country>ES</country> 
       </address> 
       <email>[email protected]</email> 
       <language>es</language> 
      </receiver> 
     </ns:createOrder> 
    </soapenv:Body> 
</soapenv:Envelope> 

我的代碼:

$orderId = time(); 
    $client = new nusoap_client('http://packandship-ws.kiala.com/psws/order?wsdl', true); 

    $params = array(
     'reference' => $orderId, 
     'identification' => array(
      'sender' => param('kiala', 'sender_id'), 
      'hash' => hash('sha512', $orderId . param('kiala', 'sender_id') . param('kiala', 'password')), 
     ), 
     'delivery' => array(
      'from' => array(
       'country' => 'ES', 
       'node' => '', 
      ), 
      'to' => array(
       'country' => 'ES', 
       'node' => '0299' 
      ), 
     ), 
     'parcel' => array(
      'description' => 'Endado', 
      'weight' => 0.200, 
      'orderNumber' => $orderId, 
      'orderDate' => date('Y-m-d') 
     ), 
     'receiver' => array(
      'firstName' => 'Customer First Name', 
      'surname' => 'Customer Sur Name', 
      'address' => array(
       'line1' => 'Line 1 Adress', 
       'line2' => 'Line 2 Adress', 
       'postalCode' => 28006, 
       'city' => 'Madrid', 
       'country' => 'ES', 
       ), 
      'email' => '[email protected]', 
      'language' => 'es' 
     ) 
    ); 
    $result = $client->call('createOrder', $params); 
    var_dump($result);die; 

和錯誤:

array 
    'faultcode' => string 'ns2:Client' (length=10) 
    'faultstring' => string 'Invalid request sent' (length=20) 
    'detail' => 
    array 
     'orderFault' => 
     array 
      'faultCode' => string 'INVALID_REQUEST' (length=15) 
      'message' => string ''orderRequest' tag is missing mandatory 'reference' attribute' (length=61) 

可能是有當我使用nusoap調用web服務時,與我的請求參數有關的問題?

<ns:createOrder reference="260778"> 

回答

1

您的請求缺少reference屬性。

我在您的$params中看不到任何reference

你確定你的php代碼是正確的嗎?

+0

好的!我錯過了這個參數。我剛剛添加了它。但它仍不能解決我的問題。在這裏發帖時,我只是想念它。 非常感謝。 –