XML aus Yahoo API - Parse Fehler
sebastian
- xml
Habe hier ne XML, generiert von der Yahoo API:
http://shopping.yahooapis.com/ShoppingService/v2/catalogListing?appid=YahooDemo&idtype=brand,model&idvalue=Sony,PSP&getspec=1&getreview=1
wenn ich die aber über PHP parsen will, bekomme ich immer nen Fehler.
PHP Code:
$request_url = 'http://shopping.yahooapis.com/ShoppingService/v2/catalogListing?appid=YahooDemo&idtype=brand,model&idvalue=Sony,PSP&getspec=1&getreview=1';
$xml = simplexml_load_file($request_url) or die("feed not loading");
var_dump($xml);
Die Browser Ausgabe:
object(SimpleXMLElement)#1 (1) { ["Message"]=> string(20) "User-agent not valid" }
Woher kommt das und wie kann ich es beheben. Habe zur Sicherheit mal eine andere XML Datei aus der Yahoo API geparst und die ging:
http://api.shopping.yahoo.com/ShoppingService/v2/productSearch?appid=review_search&category=Computer%20Accessories&show_subcategories=1&refinement=4168-Brand=HP
Gruß Sebastian
Hi,
Habe hier ne XML, generiert von der Yahoo API:
http://shopping.yahooapis.com/ShoppingService/v2/catalogListing?appid=YahooDemo&idtype=brand,model&idvalue=Sony,PSP&getspec=1&getreview=1wenn ich die aber über PHP parsen will, bekomme ich immer nen Fehler.
[...]
Die Browser Ausgabe:object(SimpleXMLElement)#1 (1) { ["Message"]=> string(20) "User-agent not valid" }
Woher kommt das
Das ist wohl kein Fehler beim Parsen, sondern das, was die XML-Ressource enthaelt.
und wie kann ich es beheben.
Yahoo schmeckt wohl der User-Agent nicht, den dein PHP-Script beim Abrufen der Ressource mitgibt.
Wenn den zu aendern ueber SimpleXML nicht geht (sehe gerade bei den Parametern keine Moeglichkeit), musst du die Ressource wohl erst mal anders laden, bspw. ueber file_get_contents. Da kannst du im context u.a. einen User-Agent mitgeben.
(Natuerlich musst du erst mal herausfinden, was fuer einen Yahoo fuer valid halten wuerde.)
MfG ChrisB
Dann wäre Yahoo aber etwas komisch, wen die in der API verschiedene User Agents voraussetzen, aus productSearch gehts ja
Hi,
Dann wäre Yahoo aber etwas komisch, wen die in der API verschiedene User Agents voraussetzen,
Tja, moeglicherweise sind sie etwas komisch.
aus productSearch gehts ja
Und das soll jetzt ein Argument sein ...?
Dein XML enthaelt eindeutig die Meldung, dass ihm dein User Agent nicht schmeckt.
Was sagt denn die Doku von Yahoo bzgl. valider User Agents?
MfG ChrisB
einfach von nem Browser, um Bots und Spider vorzubeugen.
EDIT:
Habe es mit file_get_contents() gemacht, aber ebenso erfolglos:
$request_url = 'http://shopping.yahooapis.com/ShoppingService/v2/catalogListing?appid=YahooDemo&idtype=brand,model&idvalue=Sony,PSP&getspec=1&getreview=1';
ini_set('user_agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1');
$file = file_get_contents($request_url);
$xml = simplexml_load_file($file);
var_dump($xml);
Und das bekomm ich geliefert:
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="utf-8"?> <Catalogs xmlns="urn:yahoo:merchoffers" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:yahoo:merchoffers http://shopping.yahooapis.com/shoppingservice/v2/cataloglisting.xsd"> <Catalog ID="1951018158" zip=""> <Offers totalOffers="0" /> <Reviews firstReviewPosition="1" totalReviewsAvailable="489" totalReviewsReturned="10"> <Review> <Title>The iPod of games and movies</Title> <Reviewer>nsorens</Reviewer> <CreateTime>1111979522</CreateTime> <HelpfulRecommendations>233</HelpfulRecommendations> <TotalRecommendations>275</TotalRecommendations> <Ratings> <Rating ratingType="Overall" in C:\xampp\htdocs\jahoo api\test.php on line 9
bool(false)
Hi,
Habe es mit file_get_contents() gemacht, aber ebenso erfolglos:
Was schwafelst du von "ebenso erfolglos"?
Die Meldung ist doch jetzt schon eine ganz andere, und zwar jetzt ein echter XML-Parsing-Fehler:
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity
Dann schau mal, ob sich das ueber die Angabe der LibXML-Option LIBXML_NOENT beheben laesst (bin mir nicht sicher).
MfG ChrisB
Was schwafelst du von "ebenso erfolglos"?
Die Meldung ist doch jetzt schon eine ganz andere, und zwar jetzt ein echter XML-Parsing-Fehler:
Sorry, war eventuell nicht ganz der richtige Ausdruck
Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity
Dann schau mal, ob sich das ueber die Angabe der LibXML-Option LIBXML_NOENT beheben laesst (bin mir nicht sicher).
Wie geht das, also wie vergebe ich eine LibXML Option?
Gruß
Hi,
Dann schau mal, ob sich das ueber die Angabe der LibXML-Option LIBXML_NOENT beheben laesst (bin mir nicht sicher).
Wie geht das, also wie vergebe ich eine LibXML Option?
Schau im Manual nach, welche Parameter simplexml_load_string akzeptiert.
MfG ChrisB
OMG, ich bin so blöd. Ich hatte immernoch simplexml_load_file() drinne :-(
Habe es jetzt in simplexml_load_string() geändert, geht.
Danke dir, Gruß Sebastian