Как HTTP GET при отправке VAR и получить вывод XML с помощью PHP - PullRequest
0 голосов
/ 13 октября 2010

Я пытаюсь использовать этот API: www.cpsc.gov/cpscpub/prerel/api.html

Документация: www.cpsc.gov/cpscpub/prerel/requirements.pdf

Ниже приведены адреса местоположения, которые также должны содержать примеры фрагментов кода: http://www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx

Функция getRecallByWord должна возвращать данные XML.

Вот предварительно сформированный URL-адрес для получения данных(обратите внимание, необходимо использовать https в соответствии с документом): www.cpsc.gov/cgibin/CPSCUpcWS/CPSCUpcSvc.asmx/getRecallByWord?message1=3M&password=password&userId=userId

В документации нет примечаниятребуется конкретное имя пользователя или пароль (все будет работать)

Я пробовал fopen, file_get_contents и http_get (хотя последний не работал, так как расширение не установлено).

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

Вывод:
Идентификатор ресурса # 3d сделано

allow_url_fopen включен

Ответы [ 3 ]

2 голосов
/ 13 октября 2010

Если xml возвращается, ваш браузер «спрячет» его - просмотрите исходный код страницы, и вы увидите его.

0 голосов
/ 13 октября 2010

Я попробовал, отлично работает с моим кодом:

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

возвращается:

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

Может быть, проверьте вашу конфигурацию PHP, если allow_url_fopen включен?

0 голосов
/ 13 октября 2010

Это работает для меня с file_get_contents (не забудьте добавить протокол перед URL). В руководстве по PHP указано, что вам нужно включить fopen_wrappers, чтобы это работало. Сделай phpinfo и поищи allow_url_fopen.

Другой вариант - использовать библиотеку cURL (которую я бы порекомендовал).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...