Я пытаюсь использовать этот 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 включен
Если xml возвращается, ваш браузер «спрячет» его - просмотрите исходный код страницы, и вы увидите его.
Я попробовал, отлично работает с моим кодом:
<?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 & Crafts" prname="Foil Art Spray Adhesive aerosol spray adhesives" hazard="" country_mfg="" /> </results> </message>
Может быть, проверьте вашу конфигурацию PHP, если allow_url_fopen включен?
Это работает для меня с file_get_contents (не забудьте добавить протокол перед URL). В руководстве по PHP указано, что вам нужно включить fopen_wrappers, чтобы это работало. Сделай phpinfo и поищи allow_url_fopen.
file_get_contents
fopen_wrappers
phpinfo
allow_url_fopen
Другой вариант - использовать библиотеку cURL (которую я бы порекомендовал).
cURL