2010-10-13 15 views
-1

Je suis en train d'utiliser cette API: www.cpsc.gov/cpscpub/prerel/api.htmlComment HTTP GET lors de l'envoi vars et récupérer la sortie XML en utilisant PHP

Documentation: www.cpsc.gov/ cpscpub/prerel/requirements.pdf

Voici les appels emplacement doivent être envoyés, qui comprend également l'échantillon des extraits de code: http://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx

la fonction getRecallByWord REVERSE données XML.

Voici une URL préformées pour obtenir les données (note, doivent utiliser https selon doc): www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx/getRecallByWord?message1=3M & password = mot de passe & userId = userId

Dans la documentation il y a une note qu'aucun nom d'utilisateur ou mot de passe spécifique est nécessaire (tout fonctionne)

J'ai essayé fopen, file_get_contents et http_get (bien que le dernier ne fonctionnait pas depuis l'extension n'est pas installée).

$result = fopen("https://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx/getRecallByWord?message1=3M&password=password&userID=userId",r); 
print $result; 
print "done";  
$response = file_get_contents("https://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx/getRecallByWord?message1=3M&password=password&userID=userId"); 
print $response; 
print "done"; 

Sortie:
Resource id # 3done fait

allow_url_fopen est sur

+1

"Rien ne fonctionnera" n'est pas une description du problème qui vous aidera. –

+0

Oui. S'il vous plaît montrer du code et les erreurs/problèmes que vous obtenez –

+1

"ne veulent pas travailler" ne vous aidera pas non plus. Il doit y avoir une ** description ** de ce que vous avez obtenu. il doit y avoir une explication ** détaillée ** de ce que vous avez fait (pas seulement mentionner un nom de fonction, mais le code ** réel **) et qu'est-ce que vous avez obtenu. –

Répondre

0

Cela fonctionne pour moi avec file_get_contents (ne pas oublier d'ajouter le protocole avant l'URL). Le manuel PHP spécifie que vous devez activer fopen_wrappers pour que cela fonctionne. Faites un phpinfo et recherchez allow_url_fopen.

Une autre option serait d'utiliser la bibliothèque cURL (que je recommanderais).

+0

à quoi devrait ressembler la partie protocole? – Aaron

+0

Le 'https: //' avant l'URL. –

+0

merci pour l'aide. – Aaron

0

Je l'ai essayé, fonctionne très bien avec mon code:

<?php 
    $content = file_get_contents('http://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx/getRecallByWord?message1=3M&password=password&userId=userId'); 
    header('Content-Type: text/xml; charset=utf-8'); 
    print $content; 
    exit(); 

retours:

<?xml version="1.0" encoding="utf-8"?> 
<message outcome="success" transactionID="6B3E350A-C90B-4726-A237-F76FC51C4237"> 
    <results> 
    <result UPC="" recallNo="73017" recallURL="http://www.cpsc.gov/cpscpub/prerel/prhtml73/73017.html" recDate="" y2k="73017" manufacturer="3M" type="" prname="Shipping Mate Palletizing Adhesive aerosol spray adhesives" hazard="" country_mfg="" /> 
    <result UPC="" recallNo="96097" recallURL="http://www.cpsc.gov/cpscpub/prerel/prhtml96/96097.html" recDate="1996-04-21" y2k="96097" manufacturer="3M" type="Projectors" prname="3M overhead projectors" hazard="Electrocution/Electric Shock" country_mfg="" /> 
    <result UPC="" recallNo="73014" recallURL="http://www.cpsc.gov/cpscpub/prerel/prhtml73/73014.html" recDate="" y2k="73014" manufacturer="3M" type="Arts &amp; Crafts" prname="Foil Art Spray Adhesive aerosol spray adhesives" hazard="" country_mfg="" /> 
    </results> 
</message> 

Peut-être vérifier votre configuration PHP si allow_url_fopen est activé?

+0

allow_url_fopen est activé – Aaron

+0

2 Choses, si vous voulez utiliser fopen vous ne pouvez pas accéder de cette façon, votre code devrait ressembler à: '$ handle = fopen (" https://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc .asmx/getRecallByWord? message1 = 3M & mot de passe = mot de passe & userID = userId ", r); while (!feof ($ handle)) { $ buffer = fgets ($ handle, 4096); echo $ buffer; } fclose ($ handle); impression "fait"; '2. Votre exemple (en dehors de la petite erreur avec fopen) fonctionne très bien - Désolé – Hannes

+0

merci pour l'aide. – Aaron

2

Si le fichier XML est de retour, votre navigateur le «cacher» - voir la source de la page, et vous le verrez.

+0

Je le vois maintenant, merci. – Aaron