2009-09-17 10 views
1

, если я использую Firefox и доступ http://svcs.ebay.com/services/search/FindingService/v1 я получить какие-то XML в откосе, когда я делаю это через PHP Я получаю ошибки Internal Server 500Внутренняя ошибка сервера 500 simplexml_load_file

 
$ php -r 'print_r(simplexml_load_file("http://svcs.ebay.com/services/search/FindingService/v1"));' 
PHP Warning: simplexml_load_file(http://svcs.ebay.com/services/search/FindingService/v1): failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error 
in Command line code on line 1 
PHP Stack trace: 
PHP 1. {main}() Command line code:0 
PHP 2. simplexml_load_file() Command line code:1 
PHP Warning: simplexml_load_file(): I/O warning : failed to load external entity "http://svcs.ebay.com/services/search/FindingService/v1" in Command line code on line 1 
PHP Stack trace: 
PHP 1. {main}() Command line code:0 
PHP 2. simplexml_load_file() Command line code:1 
$ 
+0

вы больше всего быть, вероятно, отсутствует какой-то пост или получить элемент. если вам нужен контент, даже если это ошибка 500, вы должны заглянуть в локон. – RageZ

+0

Я стараюсь следить за этим * live * example: http://developer.ebay.com/DevZone/finding/HowTo/GettingStarted_PHP_NV_XML/GettingStarted_PHP_NV_XML.html – alexus

+0

плюс, он работает в firefox, не делая GET или POST, я просто пытаюсь получить доступ к этому URL-адресу, и я уже получаю XML, а не ISE500 – alexus

ответ

3

Когда я посещаю http://svcs.ebay.com/services/search/FindingService/v1 в светлячок, firebug сообщает, что код ответа HTTP действительно 500. (хотя он отправляет некоторый XML в тело запроса)

Вы неправильно вызываете веб-службу.

Да, вы получили XML обратно, но код ответа 500, т. Е. Ваш URL-адрес неверен.

Вызов ximlexml_load_file через url-обертки ожидает код успеха.

Тем не менее, вы все равно могли бы получить данные. Может быть.

Но вы должны выяснить, как служба хочет, чтобы вы запрашивали.

+0

вы говорите, что файл simplexml_load_file запрещает мне видеть содержимое данных, потому что он получил 500? знаете ли вы, если я могу каким-то образом обойти его или поместить в какой-то режим отладки, где я могу увидеть все, что было передано и вернулось? – alexus

+0

Вы должны использовать завиток, чтобы получить содержимое и импортировать его в simple_xml – RageZ

+0

Да, если обертки fopen, на которые ссылается simplexml_load, не даст вам доступ к контенту ответа с 500-статусом, то либо используйте завиток, либо, возможно, вы может использовать @, чтобы игнорировать предупреждение. Вы получаете предупреждения - вы должны быть в состоянии игнорировать их. – timdev

1

Если вы хотите, чтобы иметь возможность читать использовать 500 данных запроса локон

<?php 
// create a new cURL resource 
$ch = curl_init(); 

// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, "http://svcs.ebay.com/services/search/FindingService/v1"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// grab URL and pass it to the browser 
$xml = curl_exec($ch); 
$simpleXml = simplexml_load_string($xml); 
// close cURL resource, and free up system resources 
curl_close($ch); 
?> 
+0

есть способ использовать simplexml_load_file(), хотя я получаю 500? – alexus

+0

не с файлом_get_content, file_get_content ожидать не HTTP-статус ошибки или он будет вызывать ошибку – RageZ

+0

i dont see file_get_content в вашем примере ... – alexus

1

Когда я иду на этот сайт, я получаю:

<ms:errorMessage> 
− 
<error> 
<errorId>2038</errorId> 
<domain>SOA</domain> 
<severity>Error</severity> 
<category>System</category> 
<message>Missing SOA operation name header</message> 
</error> 
</ms:errorMessage> 

Так что, казалось бы, что URL является веб-службы и, возможно, требует какой-либо аутентификации или, по крайней мере, входных данных в заголовке запроса. Ответ HTTP 500, согласно Википедии, является общей ошибкой, означающей, что сервер не может указать проблему, но знает, что она есть. Вот лучшая часть этой статьи:

коды статуса ответа, начиная с цифра «5» указывают случаи, в которых сервер осознает, что он имеет обнаружил ошибку или иначе неспособен выполнить запрос , исключение случаев, когда в ответ на запрос ГОЛОВЫ , сервер должен включать в себя объекта, содержащего объяснение ошибочной ситуации, и указать ли это временное или постоянное состояния.

Все, что в совокупности, я должен сказать, что ваша проблема заключается в том, что вы пытаетесь захватить файл с удаленного сервера, используя метод, предполагающий, что у вас есть доступ к этому файлу на уровне каталога, а сервер отвечает «Хм, что?»

Если вы хотите, чтобы получить фактическую ошибку XML, как если бы вы были в Firefox, используйте Скручивание

$ebay_url = "http://svcs.ebay.com/services/search/FindingService/v1"; 
$ebay_page = curl_init(); 

curl_setopt($ebay_page, CURLOPT_RETURNTRANSFER, true); //output to string. 
curl_setopt($ebay_page, CURLOPT_URL, $ebay_url); //set the url for the request. 

$ebay_response = curl_exec($ebay_page); 

print_r(simplexml_load_string($ebay_response)); 

Если вы действительно хотите получить что-то взамен более осмысленным, я смотрел бы на РНР SoapClient methods и в actual ebay web service documentation ,

0

Необходимо настроить заголовки http, определяющие выполняемую операцию. Если вы читать, как в make a call using the finding API, статья упоминает следующие заголовки HTTP, которые должны быть установлены:

X-EBAY-SOA-SERVICE-NAME: FindingService 
X-EBAY-SOA-OPERATION-NAME: findItemsAdvanced <-- whatever call you are making 
X-EBAY-SOA-SERVICE-VERSION: 1.0.0 
X-EBAY-SOA-GLOBAL-ID: EBAY-US 
X-EBAY-SOA-SECURITY-APPNAME: MyAppID 
X-EBAY-SOA-REQUEST-DATA-FORMAT: XML 
X-EBAY-SOA-MESSAGE-PROTOCOL: XML 

После того, как те, которые установлены ваш вызов Шоуда работать нормально.

0

Возможно, вы хотите попробовать следующий URL-адрес. Когда я это сделаю, я возвращаю XML и ответ 200.

http://svcs.ebay.com/services/search/FindingService/v1?wsdl

+0

Тот факт, что использование wsdl получает меня, WSDL говорит, что это SOAP-сервер, который вы вызываете. В этом случае вам, вероятно, придется отправить POST надлежащий запрос SOAP, чтобы на самом деле что-то сделать. – grantwparks

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