如何使用eBay API获取大型商品图片?当我使用galleryURL时,下面的API调用会返回缩略图。我尝试用PictureURLLarge替换它,但是没有返回URL。
(我指的是从底部开始的第16行:$ pic = $ item-> galleryURL;)
// API request variables
$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1'; // URL to call
$version = '1.11.0'; // API version supported by your application
$appid = 'XXXXX'; // Replace with your own AppID
$globalid = 'EBAY-US'; // Global ID of the eBay site you want to search (e.g., EBAY-DE)
$query = "soft thin (shirt, tshirt, t-shirt)"; // Supply your own query
$safequery = urlencode($query); // Make the query URL-friendly
$i = '0'; // Initialize the item filter index to 0
// Create a PHP array of the item filters you want to use in your request
$filterarray =
array(
array(
'name' => 'MaxPrice',
'value' => '1500',
'paramName' => 'Currency',
'paramValue' => 'USD'),
array(
'name' => 'FreeShippingOnly',
'value' => 'false',
'paramName' => '',
'paramValue' => ''),
array(
'name' => 'ListingType',
'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
'paramName' => '',
'paramValue' => ''),
);
// Generates an indexed URL snippet from the array of item filters
function buildURLArray ($filterarray) {
global $urlfilter;
global $i;
// Iterate through each filter in the array
foreach($filterarray as $itemfilter) {
// Iterate through each key in the filter
foreach ($itemfilter as $key =>$value) {
if(is_array($value)) {
foreach($value as $j => $content) { // Index the key for each value
$urlfilter .= "&itemFilter($i).$key($j)=$content";
}
}
else {
if($value != "") {
$urlfilter .= "&itemFilter($i).$key=$value";
}
}
}
$i++;
}
return "$urlfilter";
} // End of buildURLArray function
// Build the indexed item filter URL snippet
buildURLArray($filterarray);
// Construct the findItemsAdvanced HTTP GET call
$apicall = "$endpoint?";
$apicall .= "OPERATION-NAME=findItemsAdvanced";
$apicall .= "&SERVICE-VERSION=$version";
$apicall .= "&SECURITY-APPNAME=$appid";
$apicall .= "&GLOBAL-ID=$globalid";
$apicall .= "&descriptionSearch=true";
$apicall .= "&categoryId=110";
$apicall .= "&keywords=$safequery";
$apicall .= "&paginationInput.entriesPerPage=100";
$apicall .= "$urlfilter";
// Load the call and capture the document returned by eBay API
$resp = simplexml_load_file($apicall);
// Check to see if the request was successful, else print an error
if ($resp->ack == "Success") {
$results = '';
// If the response was loaded, parse it and build links
foreach($resp->searchResult->item as $item) {
$pic = $item->galleryURL;
$link = $item->viewItemURL;
$title = $item->title;
$ship = (float) $item->shippingInfo->shippingServiceCost;
$price = (float) $item->sellingStatus->currentPrice;
$sell = ($ship + $price);
// For each SearchResultItem node, build a link and append it to $results
$results .= "<a href=\"$link\" title=\"$title\" target=\"_blank\"><div class=\"shirt-block\"><img src=\"$pic\" width=\"200\" height=\"200\"><br /><br /><span class=\"cost\">$$sell</span></div></a>";
}
}
// If the response does not indicate 'Success,' print an error
else {
$results = "<h3>Oops! The request was not successful. Make sure you are using a valid ";
$results .= "AppID for the Production environment.</h3>";
}
答案 0 :(得分:7)
您是否尝试过易趣Forum?
中提供的最新方法我可以帮助解释和指导你。
该成员建议在$apicall .= "&outputSelector=$outputSelector";
请求的构造中包含findItemsAdvanced
。
此时我会检查返回的 XML文件以查看它是否包含在Firebug中(单击NET选项卡,然后单击下面的XHR)。在Chrome中,只需启用开发人员工具,然后点击“网络”标签即可查看返回的XML文件。单击要展开的文件,您将看到没有空格的内容。
因为XML文件不是很漂亮,所以复制该内容然后将其粘贴HERE以美化它以便于阅读。
示例XML文件HERE同时显示 pictureURLLarge 和 pictureURLSuperSize 。
验证XML图像中包含大图像的URL后,第二步就是在标记中使用它,如下所示:
$pic = $item->pictureURLLarge;
或
$pic = $item->pictureURLSuperSize;
抱歉,我没有自己的 eBay AppID 进行测试,他们的 API Playground 链接已损坏,但如果有任何不明确的事情可以提供帮助。
可以肯定的是,第一步是获取大图像请求,而第二步就是使用图像。
答案 1 :(得分:0)
就我而言,它在我将outputSelector
作为数组传递给GET
请求之后才起作用:
$apiCall .= "&outputSelector(0)=PictureURLLarge";
$apiCall .= "&outputSelector(1)=PictureURLSuperSize";
$apiCall .= "&outputSelector(2)=GalleryInfo";
但是,我正在使用findItemsByKeywords
。这是完整的请求。
$apiCall = "https://svcs.ebay.com/services/search/FindingService/v1?";
$apiCall .= "OPERATION-NAME=findItemsByKeywords";
$apiCall .= "&SERVICE-VERSION=1.0.0";
$apiCall .= "&SECURITY-APPNAME=PASTE-APP-ID-HERE";
$apiCall .= "&GLOBAL-ID=EBAY-GB";
$apiCall .= "&keywords=" . urlencode($keywords);
$apiCall .= "&outputSelector(0)=PictureURLLarge";
$apiCall .= "&outputSelector(1)=PictureURLSuperSize";
$apiCall .= "&outputSelector(2)=GalleryInfo";
$apiCall .= "&RESPONSE-DATA-FORMAT=XML";
$apiCall .= "&REST-PAYLOAD";
$apiCall .= "&paginationInput.pageNumber=1";
$apiCall .= "&paginationInput.entriesPerPage=100";
希望它将对某人有所帮助。