2014-03-01 43 views
1

我想在亞馬遜MWS PHP客戶端庫中使用GetMatchingProductForId函數來將UPC與ASIN進行匹配。一旦匹配,我從XML響應中檢索ASIN值。然後我試圖將ASIN變量傳遞給GetLowestOfferForASIN函數。我不知道如何做到這一點。我是新興的發展和掙扎。我閱讀了關於靜態變量,全局變量和函數參數的內容,並且不確定哪些內容(如果有的話)可以在這種情況下使用。下面是我的代碼的一部分:如何將亞馬遜MWS響應變量傳遞給另一個API調用?

功能invokeGetMatchingProductForId(MarketplaceWebServiceProducts_Interface $服務,$請求) { $響應= $服務 - > GetMatchingProductForId($請求);

$dom = new DOMDocument(); 
    $dom->loadXML($response->toXML()); 
    $dom->preserveWhiteSpace = false; 
    $dom->formatOutput = true; 
    $ASIN = $dom->getElementsByTagName('ASIN')->item(0)-> nodeValue; 
    echo ($ASIN); 

//這將返回正在搜索的UPC代碼的正確ASIN值。然後我嘗試在下面的函數中使用這個ASIN值作爲參數。

$request = new MarketplaceWebServiceProducts_Model_GetLowestOfferListingsForASINRequest(); 
$request->setSellerId(MERCHANT_ID); 
$request->setMarketplaceId(MARKETPLACE_ID); 
$asinList = new MarketplaceWebServiceProducts_Model_ASINListType(); 
$asinList = $ASIN; 
$asinList->setASIN(array($ASIN)); 
$request->setASINList($asinList); 
$request->setItemCondition('Used'); 
invokeGetLowestOfferListingsForASIN($service, $request); 

/** * 獲取Get最低報價的房源針對ASIN動作取樣 *獲取競爭力的價格及相關信息由 *的MarketplaceId和ASIN標識的產品。 * MarketplaceWebServiceProducts_Interface @參數MarketplaceWebServiceProducts_Interface $服務實例 * @參數混合$請求MarketplaceWebServiceProducts_Model_GetLowestOfferListingsForASIN 或參數的陣列 */

function invokeGetLowestOfferListingsForASIN(MarketplaceWebServiceProducts_Interface $service, $request) 

    { 
     try { 
     $response = $service->GetLowestOfferListingsForASIN($request); 
     echo ("Service Response\n"); 
     echo 

(「=============== ================================================== ============ \ n「);

$dom = new DOMDocument(); 
$dom->loadXML($response->toXML()); 
$dom->preserveWhiteSpace = false; 
$dom->formatOutput = true; 
echo $dom->saveXML(); 
echo("ResponseHeaderMetadata: " . $response->getResponseHeaderMetadata() . "\n"); 


} catch (MarketplaceWebServiceProducts_Exception $ex) { 
echo("Caught Exception: " . $ex->getMessage() . "\n"); 
echo("Response Status Code: " . $ex->getStatusCode() . "\n"); 
echo("Error Code: " . $ex->getErrorCode() . "\n"); 
echo("Error Type: " . $ex->getErrorType() . "\n"); 
echo("Request ID: " . $ex->getRequestId() . "\n"); 
echo("XML: " . $ex->getXML() . "\n"); 
echo("ResponseHeaderMetadata: " . $ex->getResponseHeaderMetadata() . "\n"); 
} 
} 

任何幫助將不勝感激。

感謝,

埃裏克

回答

1

你不是說明你會得到什麼樣的錯誤,但對象層次的社會背景,經濟深入研究,指出我在這裏:

$asinList = new MarketplaceWebServiceProducts_Model_ASINListType(); 
$asinList = $ASIN; 
$asinList->setASIN(array($ASIN)); 

第二行用簡單的無產階級字符串替換StupidlyLongAmazonClassNameHere的美妙實例。它可能只是後者因被視爲上層社會公民而被冒犯,因此拒絕使用其設定的ASIN方法。

+0

感謝您的建議和幫助。 – Eric

+0

我把這三行寫在我的代碼中,我收到錯誤信息。 __致函一個非對象的成員函數setASIN()___ –

+0

@MusaddiqKhan我的答案的重點是,這三行是_causing_問題。我假設你需要刪除第二行的東西來工作,但沒有嘗試過。 – Hazzit