2016-10-24 4 views
0

Я хотел бы получить URL-адрес элемента на основе идентификатора элемента. После поиска я обнаружил, что могу использовать «GetSingleItem» для достижения своей цели. Тем не менее, я получил сообщение об ошибке:Как получить URL-адрес элемента ebay на основе идентификатора товара

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

Вот мой код (все настройки являются правильными, потому что я могу использовать «GetOrders» с помощью этих конфигов):

$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); 
     } 
    } 

Любое предложение? Спасибо .

ответ

1

Как вы обнаружили, API API не требуется для создания простого URL-адреса целевой страницы eBay.

Формат URL, который вы обнаружили, работает, но он очень старый и может не поддерживаться полностью или намного дольше.

Вот простой формат URL, который является довольно ток, который вы можете использовать:

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

+0

ничего себе, это проще. Вы знаете, как направить страницу обратной связи? – jmu

0

Я получил ответ, не используя api. Вот ответ: после того, как я получил идентификатор товара, я могу использовать "http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=".$item_id, чтобы показать свой продукт на ebay.

Я нашел этот uri, используя GetOrders API.

OrderArray.Order .TransactionArray.Transaction .Variation .VariationViewItemURL

Tip: "not optimized for natural search"

Если у кого есть какие-либо идеи о «GetSingleItem», я желаю знать, почему мой код не работает.

Смежные вопросы