#php #api #fogbugz
#php #API #fogbugz
Вопрос:
Итак, я новичок в работе с API и PHP, так что потерпите. Я пытаюсь подключиться к API для аутентификации на сайте через GET parameters (как предложено в документации API). Я пытаюсь использовать file_get_contents() для возврата токена аутентификации, который он возвращает. Перенаправление на URL выводит токен в формате XML.
Однако, когда я делаю следующее, он возвращает пустую строку. Как я могу вернуть полный вывод XML?
$token = file_get_contents('http://example.com/api.asp?cmd=logonamp;email=xxx@something.comamp;password=s0mep@SSword');
var_dump($token);
Я получаю следующий вывод:
string(116) ""
Есть идеи о том, что я делаю неправильно?
Комментарии:
1. В каком формате данные возвращаются из API, JSON, XML?? Что
print_r($token)
дает?2. кроме того, чтобы добавить, что дает прямое обращение к API с помощью браузера?
Ответ №1:
Попробуйте выполнить:
$token = str_replace("<", "amp;<", $token);
$token = str_replace(">", "amp;>", $token);
vd($token);
Это происходит потому, что ваш браузер интерпретирует XML, который вы читаете, как HTML, и считывает XML в виде тегов. (Вы можете сказать, что строка не пуста, потому что vd
, для которого я предполагаю, что это псевдоним, var_dump
сообщает вам, что длина строки 116
.) Замена <
‘s и >
‘s на их допустимые HTML-объекты должна решить эту проблему.
Комментарии:
1. или просто замена <‘s … не удается закрыть тег, который никогда не открывался.
Ответ №2:
Предполагая, что API возвращает XML, вы можете использовать SimpleXML в PHP для непосредственного анализа файла:
<?php
$token = simplexml_load_file('http://example.com/api.asp?cmd=logonamp;email=xxx@something.comamp;password=s0mep@SSword');
vd($token);
?>