PHP simplexml_load_file捕获403

时间:2010-01-21 01:06:26

标签: php xml simplexml http-status-code-403

我使用以下PHP:

$xml = simplexml_load_file($request_url) or die("url not loading");

我用:

$status = $xml->Response->Status->code;

检查响应的状态。 200 bening一切都好,继续。

但是,如果我收到403拒绝访问权限错误,我如何在PHP中捕获这个,以便我可以返回用户友好的警告?

2 个答案:

答案 0 :(得分:8)

要从对simplexml_load_file()的调用中检索HTTP响应代码,我知道的唯一方法是使用PHP鲜为人知的$http_response_header。每次通过HTTP包装器发出HTTP请求时,此变量都会自动创建为包含每个响应头的数组。换句话说,每次使用simplexml_load_file()file_get_contents()时,网址都以“http://”开头

您可以使用print_r()检查其内容,例如

$xml = @simplexml_load_file($request_url);
print_r($http_response_header);

但是,在您的情况下,您可能希望使用file_get_contents()单独检索XML,然后测试您是否得到了4xx响应,如果没有,则将正文传递给simplexml_load_string()。例如:

$response = @file_get_contents($request_url);
if (preg_match('#^HTTP/... 4..#', $http_response_header[0]))
{
    // received a 4xx response
}

$xml = simplexml_load_string($response);

答案 1 :(得分:0)

您必须使用the cURL modulethe HTTP module之类的内容来获取文件,然后使用它们提供的功能来检测HTTP错误,然后将字符串从它们传递到{{3 }}