2013-10-30 63 views
0

我使用下面的代碼來調用一個magento web服務。這段代碼上個月工作正常。但現在它給了一個錯誤 - 「缺少必需的參數」Magento的web服務調用錯誤 - 缺少必要的參數

try { 
    error_reporting(E_ALL | E_STRICT); 
    ini_set('display_errors', 1); 
    $proxy = new SoapClient('http://domain.com/api/v2_soap/?wsdl=1', array('trace' => 1, 'connection_timeout' => 120)); 

    $session = $proxy->login(array(
     'username' => "username", 
     'apiKey' => "apikey" 
    )); 
    $sessionId = $session->result; 

    $filters = array(
     'sku' => array('like'=>'zol%') 
    ); 

    $products = $proxy->catalogProductList(array("sessionId" => $sessionId, "filters" => $filters)); 

    echo '<h1>Result</h1>'; 
    echo '<pre>'; 
    var_dump($products); 
    echo '</pre>'; 

} catch (Exception $e) { 
    echo '<h1>Error</h1>'; 
    echo '<p>' . $e->getMessage() . '</p>'; 
} 

回答

0

[編輯]

在錯誤信息時引發只有當用戶名爲空,或者如果apiKey是空的代碼invalid_request_param。請參閱Mage_Api_Model_Server_Handler_Abstract::login或者在使用WS-I合規性時某些參數錯誤。請參閱Mage_Api_Model_Server_WSI_Handler::prepareArgs
這應該是一個開始調試的好地方。
首先確保登錄工作。最有可能的是它。然後在prepareArgs方法和checj var/syste.log中添加Mage::log($params)Mage::log($args)以查看您的參數如何以該方法到達。也許你會明白什麼是錯的。

[/編輯]

根據WSDL中的catalogProductList方法採用3個參數:

<message name="catalogProductListRequest"> 
    <part name="sessionId" type="xsd:string"/> 
    <part name="filters" type="typens:filters"/> 
    <part name="storeView" type="xsd:string"/> 
</message> 

和當使用WS-I complience你還有3個參數,但第三不是強制性的:

<xsd:element name="catalogProductListRequestParam"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" /> 
      <xsd:element minOccurs="1" maxOccurs="1" name="filters" type="typens:filters" /> 
      <xsd:element minOccurs="0" maxOccurs="1" name="store" type="xsd:string" /> 
     </xsd:sequence> 
    </xsd:complexType> 
</xsd:element> 

您只發送一個參數。包含2個元素的數組。 我建議嘗試這個像這樣(不知道如果我是正確的):

$products = $proxy->catalogProductList($sessionId, $filters); 

也許

$products = $proxy->catalogProductList($sessionId, $filters, 0); 
+0

感謝等。我已經嘗試過但仍然是同樣的問題。 –

+0

@HelloPython。檢查我的編輯。也許它有幫助。 – Marius

0

你可以試試這個complex_filter

$filters = array(
    'complex_filter' => array(
    array(
     'key' => 'sku', 
     'value' => array('key' => 'like', 'value' => 'zol%') 
    ) 
) 
); 

$products = $proxy->catalogProductList($sessionId, $filters); 
相關問題