Задать вопрос
@koigva

Как получить контент ответа от сервера с кодом 401?

Здравствуйте.

Есть некий REST сервис, при обращении к которому есть вариант, что ответом будет json с кодом HTTP/1.0 401 Unauthorized.

Если обращаться к нему вот так:

$str = @file_get_contents($url);
print_r($http_response_header);
echo $str;

, то получаю массив с заголовками, сам json получить не удается.

Вариант с curl также не привел к положительным результатам.

Json в ответе есть точно - при переходе на $url в браузере возвращается и он и 401 ошибка.
Есть ли способ получить таки json из ответа?
  • Вопрос задан
  • 2588 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@zipo
Магии быть не может. И curl и file_get_contents возвращают вам весь контент, который отдает сервис.
Возможно разница в ответах исходит из-за разницы запроса. Например когда вы заходите через браузер дополнительно передаются cookies, которые могут изменять ответ сервиса.
Если не хотите тут светить сервис, то попробуйте воспользоваться плагинами к браузеру например тот же firebug для firefox и посмотрите точно, что именно отсылается на сервис. Потом попробуйте скопировать всю эту информацию и передать ее средствами curl или file_get_contents

Возможно так же есть двойная авторизация, одна средствами веб сервиса (стандартная http, появляется диалог с вводом логина и пароля) вторая уже более расширенная с использованием серверного языка. Если вы хотя бы единожды авторизировались в браузере, то все остальные запросы он автоматом передает нужные данные и уже к примеру доходит до второй авторизации, которая и возвращает json. А вы используя curl и file_get_contents возможно не проходите и первой авторизации, поэтому вам вообще ничего не возвращается.

В любом случае все это вы сможете увидить в firebug. Вам нужно разобраться, что именно передает ваш браузер на сервер и потом сделать тоже самое в коде. Тогда мистика исчезнет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@SashaSkot
Специалист широкого профиля
$homepage = file_get_contents('www.example.com');
echo $homepage;

А так, что не работает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы