2015-09-04 2 views
0

Я тестирую образец API API-интерфейса Amazon MWS для PHP. Когда я запускаю коды в образце GetMyPriceForASIN, он не возвращает никакого ответа даже на ответ об ошибке.GetMyPriceForASIN на Amazon MWS API не работает

$ret = 'ASINList.ASIN.0.=000001ASS&ASINList.ASIN.1.=B00002YHY&ASINList.ASIN.2.=B01112Z4VW'; 
$request = new MarketplaceWebServiceProducts_Model_GetMyPriceForASINRequest(); 
$request->setSellerId(MERCHANT_ID); 
$request->setASINList($ret); 
invokeGetMyPriceForASIN($service, $request); 


function invokeGetMyPriceForASIN(MarketplaceWebServiceProducts_Interface $service, $request){ 
try { 
$response = $service->GetMyPriceForASIN($request); 
$dom1 = new DOMDocument(); 
$dom1->loadXML($response->toXML()); 
$dom1->preserveWhiteSpace = false; 
$dom1->formatOutput = true; 
echo $dom1->saveXML(); 
} catch (MarketplaceWebServiceProducts_Exception $ex1) { 
    echo("Caught Exception: " . $ex1->getMessage() . "\n"); 
    echo("Response Status Code: " . $ex->getStatusCode() . "\n"); 
    echo("Error Code: " . $ex1->getErrorCode() . "\n"); 
    echo("Error Type: " . $ex1->getErrorType() . "\n"); 
    echo("Request ID: " . $ex1->getRequestId() . "\n"); 
    echo("XML: " . $ex1->getXML() . "\n"); 
    echo("ResponseHeaderMetadata: " . $ex1->getResponseHeaderMetadata() . "\n"); 
} 
} 

, как я пытаюсь отлаживать это сам я не застрял до этого набора кодов

public function getMyPriceForASIN($request){  
if (!($request instanceof MarketplaceWebServiceProducts_Model_GetMyPriceForASINRequest)) { 
require_once (dirname(__FILE__) . '/Model/GetMyPriceForASINRequest.php'); 
$request = new MarketplaceWebServiceProducts_Model_GetMyPriceForASINRequest($request); 
} 

    $parameters = $request->toQueryParameterArray(); 
    $parameters['Action'] = 'GetMyPriceForASIN'; 
    $httpResponse = $this->_invoke($parameters); 

    require_once (dirname(__FILE__) . '/Model/GetMyPriceForASINResponse.php'); 
    $response = MarketplaceWebServiceProducts_Model_GetMyPriceForASINResponse::fromXML($httpResponse['ResponseBody']); 
    $response->setResponseHeaderMetadata($httpResponse['ResponseHeaderMetadata']); 
    return $response; 
} 

на этом коде я обнаружил ошибку

$parameters = $request->toQueryParameterArray(); 

он не возвращает массив и я не знаю, где найти функцию. Я также задаюсь вопросом, возможно, что мой формат списка ASIN был неправильным, это формат.

ASINList.ASIN.0.=000001ASS&ASINList.ASIN.1.=B00002YHY&ASINList.ASIN.2.=B01112Z4VW 
+0

Что такое, что функция 'test1'? Можете ли вы исправить это, потому что теперь он использует неопределенные переменные '$ response',' $ x', ничего не возвращает, если исключение не поймано ... Это делает что-то странное. Или исключите его, если это не имеет отношения к вопросу. –

ответ

0

Наконец-то я нашел ответ в своем формате ASIN List, который является неправильным. Я использовал эти коды, чтобы правильно форматировать мой список ASIN

$asin_list = new MarketplaceWebServiceProducts_Model_ASINListType(); 
$ret = $asin_list->setASIN($xml_arr); 
0

Я думаю, что вы должны сделать это до $request->setASINList($ret);

require_once "MarketplaceWebServiceProducts_Model_GetMyPriceForASINRequest"; 
$asin_list = new MarketplaceWebServiceProducts_Model_ASINListType(); 
$asin_list->setASIN($asins_array); 
Смежные вопросы