2

我试图使用 ebays 搜索 API 执行一个简单的调用,当我打电话时我没有得到任何响应,问题在于实际调用本身。

$endpoint = 'http://open.api.ebay.com/shopping?';  
$responseEncoding = 'XML';   
$version = '631';   // API version number
$appID   = 'asdf3e6e3'; 
$itemType  = "AllItemTypes";
$itemSort  = "EndTime";

//find items advanced
$apicalla  = "$endpoint"
    ."callname=FindItemsAdvanced"
    ."&version=$version"
    ."&siteid=0"
    ."&appid=$appID"
    ."&MaxEntries=10"
    ."&ItemSort=EndTime"
    ."&ItemType=AllItemTypes"
    ."&IncludeSelector=SearchDetails"
    ."&responseencoding=$responseEncoding";

    $resp = simplexml_load_file($apicalla);

这个调用相当于

http://open.api.ebay.com/shopping?callname=FindItemsAdvanced&version=631&siteid=0&appid=asdf3e6e3&MaxEntries=10&ItemSort=EndTime&ItemType=AllItemTypes&IncludeSelector=SearchDetails&responseencoding=XML

我的问题是我缺少什么来进行这个简单的搜索调用?

4

2 回答 2

4

看起来您正在尝试使用 eBay 的Shopping API,特别是FindItemsAdvanced我认为很久以前已弃用并且可能不再起作用的调用(我不再在调用参考中看到它)。您想要做的是使用findItemsAdvancedeBay 的Finding API中的 use 。

首先,您需要稍微更改您的 API 端点和查询字符串参数(findItemsAdvanced有关详细信息,请参阅上述调用参考,但我相信它看起来更像这样(我findItemsAdvanced至少 6 个月没有碰过我的调用,所以我没有对此进行测试):

$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1?';  
$responseEncoding = 'XML';   
$version = '1.8.0';   // API version number (they're actually up to 1.11.0 at this point
$appID   = 'asdf3e6e3'; 
$itemSort  = "EndTimeSoonest";

//find items advanced
$apicalla  = "$endpoint"
    ."OPERATION-NAME=findItemsAdvanced"
    ."&SERVICE-VERSION=$version"
    ."&GLOBAL-ID=EBAY-US"
    ."&SECURITY-APPNAME=$appID"
    //."&MaxEntries=10"    // look for an equivalent for this (maybe paginationInput.entriesPerPage?)
    ."&sortOrder=EndTimeSoonest"
    //."&ItemType=AllItemTypes"   // not needed AFAICT, otherwise look at itemFilterType
."&descriptionSearch=true";
    ."& RESPONSE-DATA-FORMAT=$responseEncoding";

$resp = simplexml_load_file($apicalla);

除此之外,要使用,您必须按类别 ( ) 或关键字 ( )findItemsAdvanced指定要搜索的内容,因此“请指定查询!” 错误信息。categoryIdkeywords

因此,您还需要添加以下内容(假设关键字):

$keywords = "something";
$apicalla .= "&keywords=" . urlencode($keywords);

为您提供以下内容:

$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1?';  
$responseEncoding = 'XML';   
$version = '1.8.0';   // API version number (they're actually up to 1.11.0 at this point
$appID   = 'asdf3e6e3'; 
$itemSort  = "EndTimeSoonest";
$keywords = "something";    // make sure this is a valid keyword or keywords

//find items advanced
$apicalla  = "$endpoint"
    ."OPERATION-NAME=findItemsAdvanced"
    ."&SERVICE-VERSION=$version"
    ."&GLOBAL-ID=EBAY-US"
    ."&SECURITY-APPNAME=$appID"
    //."&MaxEntries=10"    // look for an equivalent for this (maybe paginationInput.entriesPerPage?)
    ."&sortOrder=$itemSort"
    //."&ItemType=AllItemTypes"   // not needed AFAICT, otherwise look at itemFilterType
    ."&descriptionSearch=true";
    ."& RESPONSE-DATA-FORMAT=$responseEncoding"
    ."&keywords=" . urlencode($keywords);

$resp = simplexml_load_file($apicalla);

最后一点:如果您想加载在结果中找到的特定商品的更多详细信息,您仍然需要使用 Shopping API(特别是GetSingleItemGetMultipleItems调用)。因此,您最终可能会混合使用 Shopping & Finding API。

于 2012-05-02T19:32:11.283 回答
1

它应该是这样的:

<?php
$url = 'http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsAdvanced&SERVICE-VERSION=1.11.0&SECURITY-APPNAME=YOUR_APP_ID&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&paginationInput.entriesPerPage=2&keywords=ipod&siteid=203&GLOBAL-ID=EBAY-IN';
$xml = file_get_contents( $url );
$xml = simplexml_load_string( $url );
?>

登录到您的 ebay 开发者帐户并单击此链接:使用 API 测试工具测试您的调用

希望这可以帮助。

于 2012-05-03T05:08:21.270 回答