У меня есть веб-приложение и api, и моя система входа в систему работает с api, поэтому он возвращает: статус заголовка 200, если он успешно (имя пользователя и пароль правильно), в противном случае он возвращает HTTP/1.0 401 Unauthorized и json message например: {успех: 0, "неправильное имя пользователя/пароль"} (проверено почтальонов плагин в Google Chrome)php file_get_content returing 401 on failed
для бывших, если я хочу, чтобы сделать запрос:
$method = "login";
$data = array("user"=>"test", "pass"=>"test");
send_re($method, $data);
это моя функция send_re
function send_re($method, $data){
$url = "api.location/".$api_method;
$options = array(
'http' => array(
'method' => 'POST',
'content' => http_build_query($data),
'header'=> "Content-Type: application/x-www-form-urlencoded\r\n"
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return stripslashes(json_encode($result));
}
если мои $ данные правильно e.x имя пользователя и пароль, но если они не я не получаю сообщение об ошибке, но это:
A PHP Error was encountered
Severity: Warning
Message: file_get_contents(http://85.10.229.108/home/login): failed to open stream: HTTP request
HTTP/1.0 401 Unauthorized
Filename: libraries/api.php
Есть ли способ избежать этой проблемы и получить сообщение от API?
вы пытались положить '@' 'перед тем file_get_contents' подавить предупреждения? – luk2302
Да, он не показывает ошибку с '@', но не возвращает ответ json ex: '{success: 0," неправильное имя пользователя/пароль "}' –
Это довольно ожидаемое поведение, поскольку HTTP 401 указывает ошибка и ничего не возвращает, кроме самой ошибки, я думаю. Я предполагаю, что вы создаете ошибку через header() в вызываемом скрипте? – luk2302