Internal Server Error 500 simplexml_load_file

5 Cevap php

Ben Firefox ve erişimi kullanırsanız, PHP ile ben Internal Server Error 500 olsun bunu zaman http://svcs.ebay.com/services/search/FindingService/v1 Ben, Dayanma XML çeşit olsun

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

5 Cevap

Ben ateş http://svcs.ebay.com/services/search/FindingService/v1 ziyaret ettiğinizde, kundakçı HTTP reponse kod aslında 500 olduğunu bildirdi. (Bu istek vücuttaki bazı XML gönderir olsa bile)

Sen yanlış bir şekilde web hizmeti diyorlar.

Evet, geri XML var, ama yanıt kodu URL yanlış anlam, 500 olduğunu.

Url sarma yoluyla ximlexml_load_file çağıran bir başarı kodu bekliyor.

O dedi, muhtemelen yine verilere alabilir. Belki.

Ama hizmeti sorgulamak için istediğini nasıl anlamaya gerekir.

500 isteği veri kullanımı kıvrılmasını okumak mümkün olmak istiyorum

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

Ben o siteye gidin, ben alıyorum:

<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>

Yani URL bir web hizmeti için ve muhtemelen bazı kimlik tür ya da istek başlığında en az girdi verileri gerektirir görünüyor. HTTP yanıtı 500, Wikipedia göre, sunucu sorunu belirtin ama kimse yoktu bilir olamaz anlamı genel bir hatadır. İşte o yazının en iyi parçası:

Response status codes beginning with the digit "5" indicate cases in which the server is aware that it has encountered an error or is otherwise incapable of performing the request. Except when responding to a HEAD request, the server should include an entity containing an explanation of the error situation, and indicate whether it is a temporary or permanent condition.

Tüm bu kombine, ben senin sorunu senin bu dosyaya bazı dizin düzeyinde erişimi ve sunucu Um "ile yanıt varsayar bir yöntemi kullanarak uzak bir sunucudan dosya kapmak için çalışıyoruz olduğunu söylemek olurdu, ne? "

Eğer Firefox sanki gerçek XML hatayı almak istiyorsanız, cURL kullanın:

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

Aslında geri daha anlamlı bir şey almak istiyorsanız, ben PHP'nin SoapClient methods ve actual ebay web service documentation bakmak olacaktır.

Http başlıkları operasyon yürütülecek belirterek ayarlanması gerekir. Eğer make a call using the finding API, makale ayarlanması gereken aşağıdaki http başlıklarını bahseder nasıl okursanız:

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

Bu ayarlandıktan sonra çağrı iyi çalışır konuşulmalıdır.

Belki aşağıdaki URL'yi denemek istiyorum. Yapmam, ben XML ve bir 200 yanıtı geri almak.

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