2013-10-30 3 views
0

아래 코드를 사용하여 magento webservice를 호출합니다. 이 코드는 지난 달에 정상적으로 작동했습니다. 오류 메시지가 apiKey에이 비어있는 경우 사용자 이름이 비어있는 경우에만 발생이나되는 코드 invalid_request_param을 가지고Magento webservice call error - 필수 매개 변수가 누락되었습니다.

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

[편집] "필수 매개 변수가 누락"-하지만 지금은 오류를주고 있어요. Mage_Api_Model_Server_Handler_Abstract::login을 참조하거나 WS-I 준수를 사용할 때 일부 매개 변수가 잘못된 경우 Mage_Api_Model_Server_WSI_Handler::prepareArgs을 참조하십시오.
디버깅을 시작하기에 좋습니다.
먼저 로그인이 제대로 작동하는지 확인하십시오. 아마 그럴 것이다. 그런 다음 prepareArgs 메서드에서 Mage::log($params)Mage::log($args)을 추가하고 checj var/syste.log을 매개 변수가 해당 메서드에 어떻게 도착하는지 확인하십시오. 어쩌면 당신은 무엇이 잘못 됐는지를 알게 될 것입니다.

<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 개 개의 매개 변수가 있지만 3 의무화되지 않습니다 : :

[/ 편집]

는 WSDL에 따르면 catalogProductList 방법은 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

덕분에 같은 complex_filter 시도 할 수 있습니다. 나는 시도했지만 여전히 같은 문제. –

+0

@HelloPython. 내 편집을 확인하십시오. 어쩌면 도움이 될지도 모른다. – Marius

0

는이

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

$products = $proxy->catalogProductList($sessionId, $filters); 
관련 문제