2012-05-20 31 views
10

Làm cách nào để có được hình ảnh mặt hàng lớn bằng API eBay? Cuộc gọi API bên dưới trả lại hình thu nhỏ khi tôi sử dụng galleryURL. Tôi đã thử thay thế nó bằng PictureURLLarge, nhưng điều đó không trả về một URL.API eBay - Cách nhận các ảnh lớn?

(Dòng Tôi đang đề cập đến là 16 từ đáy: $ 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

Bạn có thể 'var_dump ($ item)' trong vòng lặp không? Ngoài ra, bạn đã thử '$ item-> pictureURLLarge' (phân biệt chữ hoa chữ thường)? –

+1

Tôi phát hiện ra vấn đề, và nó thực sự là ngu ngốc. Đặt tìm kiếm mô tả là "true" sẽ vô hiệu hóa khả năng sử dụng outputSelector để bạn có được pictureURLLarge. Tôi không biết tại sao ... khiến tôi muốn khóc. – Carson

Trả lời

7

Bạn hãy thử phương pháp mới nhất được cung cấp trong eBay Forum?

Tôi có thể giúp giải thích và hướng dẫn bạn.

Thành viên đó đề xuất bao gồm $apicall .= "&outputSelector=$outputSelector"; trong cấu trúc yêu cầu findItemsAdvanced của bạn.

Lúc đó tôi sẽ kiểm tra Tệp XML được trả về để xem liệu nó có được bao gồm qua Firebug hay không (nhấp vào tab NET, sau đó nhấp vào XHR bên dưới). Trong Chrome, chỉ cần bật Công cụ dành cho nhà phát triển và nhấp vào tab NETWORK để xem tệp XML được trả về. Nhấp vào tệp để mở rộng và bạn sẽ thấy nội dung không có khoảng trắng.

Vì tệp XML sẽ không đẹp, hãy sao chép nội dung đó rồi dán nó HERE để làm đẹp nó để dễ đọc.

tập tin XML mẫu HERE có cả pictureURLLargepictureURLSuperSize hiển thị.

Khi bạn xác minh rằng URL cho hình ảnh lớn đã được đưa vào tập tin XML của bạn, bước thứ hai là để sau đó sử dụng nó trong đánh dấu của bạn như sau:

$pic = $item->pictureURLLarge; 

hoặc

$pic = $item->pictureURLSuperSize; 

Xin lỗi Tôi không có eBay AppID của eBay để kiểm tra và liên kết API Playground bị hỏng nhưng có thể hỗ trợ thêm là mọi thứ không rõ ràng. Để chắc chắn, bước đầu tiên là lấy yêu cầu Ảnh lớn và bước thứ hai chỉ đơn giản là sử dụng hình ảnh.

+0

Cảm ơn bạn đã nỗ lực. Xin lỗi vì không trả lời sớm hơn, nhưng tôi đã ở Mexico không có kết nối internet. Tôi đã thử những gì bạn nói ở trên, nhưng tôi không thấy một tập tin xml khi tôi sử dụng firebug. Trang web là: http://shirtcake.com/ Có lẽ bạn có thể thấy điều gì đó khác ở đó? – Carson

+0

Ví dụ đầu tiên của thẻ body đóng sẽ bị xóa vì bạn có thẻ thứ hai. Dưới thẻ body đóng đầu tiên đó là một thể hiện khác của jQuery v1.71 trong khi trước đó bạn đã cài đặt v1.6.4 nếu bạn nhìn về phía bắc. Tôi không thấy bất kỳ loại yêu cầu để ebay được thực hiện cũng không làm tôi thấy bất kỳ đánh dấu ở trên bạn đăng. Nó đâu rồi? – arttronics

+0

Hum, có lẽ đó là lỗi của quy trình PHP mà bạn đang sử dụng. [Hướng dẫn về eBay] này (http: //developer.ebay.com/devzone/finding/HowTo/PHP_SearchInterm_NV_XML/PHP_SearchInterm_NV_XML.html) có các tệp dự án có thể tải xuống và hướng dẫn từng bước để đảm bảo quá trình PHP đúng, phía máy chủ. Ngoài ra còn có các tệp PHP ví dụ hiển thị đánh dấu tương tự như của bạn để hỗ trợ trong việc tạo/thiết lập quy trình PHP cho các đề xuất của họ. Không giúp đỡ à? – arttronics

Các vấn đề liên quan