2014-01-21 39 views
1

我試圖獲取產品的運輸信息,這是我的代碼(我隱藏了我的應用程序ID)。PHP eBay通話問題

$endpoint2 = "http://open.api.ebay.com/shopping"; 

$xmlrequest2 = "<?xml version='1.0' encoding='utf-8'?>\n"; 
$xmlrequest2 .= "<GetShippingCostsRequest xmlns='urn:ebay:apis:eBLBaseComponents'>\n"; 
// $xmlrequest2 .= "<DestinationCountryCode>GB</DestinationCountryCode>\n"; 
// $xmlrequest2 .= "<IncludeDetails>true</IncludeDetails>\n"; 
$xmlrequest2 .= "<ItemID>".$id."</ItemID>\n"; 
$xmlrequest2 .= "</GetShippingCostsRequest>\n"; 

$session2 = curl_init($endpoint2);      // create a curl session 
curl_setopt($session2, CURLOPT_POST, true); 
var_dump($xmlrequest2); 
curl_setopt($session2, CURLOPT_POSTFIELDS, $xmlrequest2); // set the body of the POST 
curl_setopt($session2, CURLOPT_RETURNTRANSFER, true); 
$headers2 = array(
'X-EBAY-API-APP-ID:'.getsetting(2), 
'X-EBAY-API-VERSION:849', 
'X-EBAY-API-SITE-ID:3', 
'X-EBAY-API-CALL-NAME:GetShippingCosts', 
'X-EBAY-API-REQUEST-ENCODING:XML', 
); 
print_r($headers2); 

     // create a curl session 
curl_setopt($session2, CURLOPT_HTTPHEADER, $headers2); //set headers using the above array of headers 
$responseXML = curl_exec($session2); 
// send the request 
//echo $responseXML; 
curl_close($session2); 

return $responseXML; 

而這是我得到的輸出/錯誤。

string(162) "<?xml version='1.0' encoding='utf-8'?> 
<GetShippingCostsRequest xmlns='urn:ebay:apis:eBLBaseComponents'> 
<ItemID>300903657321</ItemID> 
</GetShippingCostsRequest> 
" 
Array 
(
    [0] => X-EBAY-API-APP-ID:1234 
    [1] => X-EBAY-API-VERSION:849 
    [2] => X-EBAY-API-SITE-ID:3 
    [3] => X-EBAY-API-CALL-NAME:GetShippingCosts 
    [4] => X-EBAY-API-REQUEST-ENCODING:XML 
) 
<?xml version="1.0" encoding="UTF-8"?> 

    <GetShippingCostsResponse xmlns=""> 
    <ns1:Ack xmlns:ns1="urn:ebay:apis:eBLBaseComponents">Failure</ns1:Ack> 
    <ns2:Errors xmlns:ns2="urn:ebay:apis:eBLBaseComponents"> 
    <ns2:ShortMessage>Input data is invalid.</ns2:ShortMessage> 
    <ns2:LongMessage>Input data for the given tag is invalid or missing. Please check API documentation.</ns2:LongMessage> 
    <ns2:ErrorCode>1.22</ns2:ErrorCode> 
    <ns2:SeverityCode>Error</ns2:SeverityCode> 
    <ns2:ErrorParameters ParamID="0"> 
    <ns2:Value>XML document structures must start and end within the same entity.</ns2:Value> 
    </ns2:ErrorParameters> 
    <ns2:ErrorClassification>RequestError</ns2:ErrorClassification> 
    </ns2:Errors> 
    <ns3:Build xmlns:ns3="urn:ebay:apis:eBLBaseComponents">E853_CORE_APILW_16579549_R1</ns3:Build> 
    <ns4:Version xmlns:ns4="urn:ebay:apis:eBLBaseComponents">853</ns4:Version> 
    </GetShippingCostsResponse> 

任何想法?我根本無法解決問題所在。他們的文檔似乎沒有任何幫助。如果我複製並粘貼到他們的API測試工具的XML它沒有任何問題。

+0

我處於相同的情況。你解決了嗎? – iGili

回答

0

我沒有在任何地方看到您的憑據。他們給你的API工具有點欺騙性,因爲它用你的憑證包裝了你的電話。 http://developer.ebay.com/DevZone/guides/ebayfeatures/Basics/Call-StandardCallData.html#StandardOutputData

<?xml version="1.0" encoding="utf-8"?> 
<GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents"> 
    <RequesterCredentials> 
    <eBayAuthToken> Token goes here </eBayAuthToken> 
    </RequesterCredentials> 
    <Version>383</Version> 
</GeteBayOfficialTimeRequest> 
+0

我補充說,我仍然得到相同的錯誤。 – user3221394

+0

該錯誤似乎表明XML錯誤。您是否嘗試將原始API調用粘貼到文本編輯器中? – Machavity

2

我對eBay Shopping API的每次調用都有同樣的問題。你可以修復它添加Content-Type: text/xml;charset=UTF-8到你的頭(這解決了我的問題)。