PHP从file_get_contents处理HTTP 403

时间:2015-06-24 16:45:39

标签: php http

我尝试从file_get_contents中捕获403错误。请不要回答我应该使用curl。 这是我的代码片段:

$url     = "https://authserver.mojang.com/authenticate";
$data    = array(
        "agent"      => array(
                "name"       => "Minecraft",
                "version"    => 1
        ),
        "username"   => $username,
        "password"   => $password
);

$options = array(
        "http" => array(
                "header"     => "Content-Type: application/json\n",
                "method"     => "POST",
                "content"    => json_encode( $data )
        )
);

$context = stream_context_create( $options );
$result  = file_get_contents( $url, false, $context );

$response = json_decode( $result );

我的问题是,当我使用有效凭据进行请求时,mojang会使用有效的json字符串进行回答。但是,当我使用无效凭据进行请求时,我收到403 HTTP错误。

如何在我的网站上没有警告的情况下抓住它们。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。有关详细信息,请参阅Good error handling with file_get_contents

现在是我的代码:

[...]
$result  = @file_get_contents( $url, false, $context );

if( ( $response = json_decode( $result ) ) === NULL )
{
    exit( "invalid credentials" );
}
else
{
    exit( "Go on " );
}