2016-10-24 15 views
0

Ich möchte die Artikel-URL basierend auf der Artikel-ID erhalten. Nach der Suche habe ich festgestellt, dass ich "GetSingleItem" verwenden kann, um mein Ziel zu erreichen. Allerdings habe ich einen Fehler:Wie bekomme ich Ebay Artikel URL basierend auf Artikel-ID

eBay returned the following error(s): 2 : Unsupported API call. The API call "GetSingleItem" is invalid or not supported in this release.

Hier ist mein Code (alle Konfiguration korrekt ist, weil ich "GetOrders" unter Verwendung dieses configs verwenden):

$subverb = "GetSingleItem"; 

$requestXmlBody = '<?xml version="1.0" encoding="utf-8" ?>'; 
$requestXmlBody .= '<GetSingleItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">'; 
$requestXmlBody .= "<ItemID>111986554711</ItemID>"; 
$requestXmlBody .= '</GetSingleItemRequest>'; 

//Create a new eBay session with all details pulled in from included keys.php 
$session = new eBaySession($userToken, $devID, $appID, $certID, $serverUrl, $compatabilityLevel, $siteID, $subverb); 

//send the request and get response 
$responseXml = $session->sendHttpRequest($requestXmlBody); 
if (stristr($responseXml, 'HTTP 404') || $responseXml == '') 
    die('<P>Error sending request'); 

//Xml string is parsed and creates a DOM Document object 
$responseDoc = new DomDocument(); 
$responseDoc->loadXML($responseXml); 

//get any error nodes 
$errors = $responseDoc->getElementsByTagName('Errors'); 
$response = simplexml_import_dom($responseDoc); 
$entries = $response->PaginationResult->TotalNumberOfEntries; 

//if there are error nodes 
if ($errors->length > 0) { 
    echo '<P><B>eBay returned the following error(s):</B>'; 
    //display each error 
    //Get error code, ShortMesaage and LongMessage 
    $code = $errors->item(0)->getElementsByTagName('ErrorCode'); 
    $shortMsg = $errors->item(0)->getElementsByTagName('ShortMessage'); 
    $longMsg = $errors->item(0)->getElementsByTagName('LongMessage'); 

    //Display code and shortmessage 
    echo '<P>', $code->item(0)->nodeValue, ' : ', str_replace(">", "&gt;", str_replace("<", "&lt;", $shortMsg->item(0)->nodeValue)); 

    //if there is a long message (ie ErrorLevel=1), display it 
    if (count($longMsg) > 0) 
     echo '<BR>', str_replace(">", "&gt;", str_replace("<", "&lt;", $longMsg->item(0)->nodeValue)); 
    } else { //If there are no errors, continue 
     if (isset($_GET['debug'])) { 
     header("Content-type: text/xml"); 
     print_r($responseXml); 
     } else { 
     print("\n; 111986554711: " . $response->Item->ViewItemURLForNaturalSearch); 
     } 
    } 

Jeden Vorschlag? Vielen Dank .

Antwort

1

Wie Sie festgestellt haben, benötigen Sie die API nicht, um eine einfache Zielseiten-URL für eBay-View-Artikel zu erstellen.

Das von Ihnen entdeckte URL-Format funktioniert, ist jedoch sehr alt und wird möglicherweise nicht vollständig oder länger unterstützt.

Hier ist ein einfaches URL-Format, das ziemlich aktuell ist, dass Sie verwenden können:

http://www.ebay.com/itm/122225724269

+0

wow, das ist einfacher. Weißt du, wie man direkt auf die Feedbackseite geht? – jmu

0

Ich bekam eine Antwort ohne API zu verwenden. Hier ist die Antwort: Nachdem ich die Artikel-ID bekommen habe, kann ich "http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=".$item_id verwenden, um mein Produkt auf ebay zu zeigen.

Ich fand dieses uri mit GetOrders API.

OrderArray.Order .TransactionArray.Transaction .Variation .VariationViewItemURL

Tip: "not optimized for natural search"

Wenn jemand eine Idee über „GetSingleItem“ hat, ich bin bereit, zu wissen, warum mein Code funktioniert nicht.

Verwandte Themen