2012-07-05 127 views
0

我有SOAP請求的參數如下:如何發送此肥皂請求?

<soap:Body> 
<GetProductList xmlns="http://schemas.acme.eu/"> 
<GetProductListRequest> 
<Filters> 
<Filter> 
<Name>Language</Name> 
<Value>lt-lt</Value> 
</Filter> 
<Filter> 
<Name>Currency</Name> 
<Value>LTL</Value> 
</Filter> 
</Filters> 
</GetProductListRequest> 
</GetProductList> 
</soap:Body> 

我嘗試發送的請求是這樣的:

$result = $client->GetProductList(array('Filters' => array(
        'Filter'=> array('Name' => 'Language', 'Value' => 'lt-lt'), 
        'Filter'=> array('Name' => 'Currency', 'Value' => 'LTL')))); 

但我在這裏得到錯誤:

(!) Fatal error: Uncaught SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in C:\wamp\www\tarpine_xml\class\acme_xml.php:25 Stack trace: #0 C:\wamp\www\tarpine_xml\class\acme_xml.php(25): SoapClient->__call('GetProductList', Array) #1 C:\wamp\www\tarpine_xml\class\acme_xml.php(25): SoapClient->GetProductList(Array) #2 C:\wamp\www\tarpine_xml\index.php(18): ACME_XML->parseACME() #3 {main} thrown in C:\wamp\www\tarpine_xml\class\acme_xml.php on line 25 

不帶參數的其他要求工作正常..那麼我的要求有哪些錯誤?

解決

我創建這個代碼:

$parrams['GetProductListRequest']['Filters']['Filter'] = array(); 
    $parrams['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Language', 'Value' => 'lt-lt'); 
    $parrams['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Currency', 'Value' => 'LTL'); 
    $result = $client->GetProductList($parrams); 

而且它完美的作品:)

+2

不知道,但你明明做錯事,當你確定在您的參數中輸入'Filter'兩次... – 2012-07-05 11:57:15

+0

我使用$ client = new SoapClient(「https://api.acme.lt/1.0/commerce.asmx?wsdl」);這種方法 – 2012-07-05 12:03:12

回答

1

不熟悉這個FW,但我認爲你需要添加GetProductListRequest到請求(這是根xml標籤)。

所以,你應該是這樣的:

$result = $client->GetProductList(array('GetProductListRequest'=>array('Filters' => array(
        'Filter'=> array('Name' => 'Language', 'Value' => 'lt-lt'), 
        'Filter'=> array('Name' => 'Currency', 'Value' => 'LTL'))))); 
+0

nope,沒有幫助:) – 2012-07-05 12:02:45

+0

你在哪裏正確的項目GetProductListRequest,但沒有與所有請求:) – 2012-07-05 12:16:55

0

小修復您正在使用的庫

$params['GetProductList']['GetProductListRequest']['Filters']['Filter'] = array(); 
$params['GetProductList']['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Language', 'Value' => 'lt-lt'); 
$params['GetProductList']['GetProductListRequest']['Filters']['Filter'][] = array('Name' => 'Currency', 'Value' => 'LTL');