2012-05-02 2 views
2

Я пытаюсь выполнить простой вызов с помощью API поиска ebays, когда я делаю звонок, я не получаю ответа, и проблема связана с самим фактическим вызовом.ebay api - поиск php call

$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 

Мой вопрос, что мне не хватает, чтобы сделать этот простой поиск вызов?

+0

Получаете ли вы что-нибудь обратно, если вы попробуете 'echo file_get_contents ($ apicalla)'? Если нет, то у вас есть проблема связи - url fopen может быть отключен, исходящие HTTP-запросы с сервера могут быть заблокированы, ebay может иметь черный список ваших IP-адресов и т. Д. –

+0

жаль, что он печатает что-то Marc, но у меня есть сделал вызов getMostBooks раньше и, похоже, работает хорошо. –

+0

он возвращает '2012-05-02T19: 05: 05.024Z Failure Пожалуйста, сформулируйте запрос! Укажите запрос! 10.1 Ошибка RequestError E771_CORE_BUNDLED_14784928_R1 771' –

ответ

4

Похоже, вы пытаетесь использовать eBay Shopping API, в частности вызов FindItemsAdvanced, который, как я считаю, устарел довольно давно и, возможно, больше не работает (я больше не вижу его в ссылке на вызов). Что вы хотите сделать, так это использовать findItemsAdvanced от eBay's Finding API.

Во-первых, вам необходимо изменить свой 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, необходимо указать, что вы ищете либо категории (categoryId) или по ключевым словам (keywords), поэтому сообщение об ошибке «Пожалуйста, укажите запрос!».

Таким образом, вы также должны добавить что-то вроде следующих (предполагающих ключевых слов):

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

Последнее замечание: Если вы хотите загрузить более подробную информацию о конкретных элементы, которые вы найдете в результатах поиска, вы все равно хотите использовать API покупок (в частности, звонки GetSingleItem & GetMultipleItems). Таким образом, вы можете в конечном счете использовать сочетание приложений для поиска &.

+0

это не устранило проблему, я думаю, что в строке вызова что-то не хватает –

+0

Какая ошибка у вас на этом этапе? – morgant

+0

Я получаю что-то вроде '2012-05-02T22: 04: 39.405Z Успех E771_CORE_BUNDLED_14784928_R1 771 150803837554 2012-05-02T22: 04: 39.000Z', за которым следует ebay-адреса –

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 и нажмите на этой ссылке: Test your calls with API Test Tool

Надеется, что это помогает.

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