我正在使用以下 PHP:
$xml = simplexml_load_file($request_url) or die("url not loading");
我用:
$status = $xml->Response->Status->code;
检查响应的状态。200 bening 一切正常,继续。
但是,如果我收到 403 拒绝访问错误,如何在 PHP 中捕捉到这个错误,以便返回用户友好的警告?
我正在使用以下 PHP:
$xml = simplexml_load_file($request_url) or die("url not loading");
我用:
$status = $xml->Response->Status->code;
检查响应的状态。200 bening 一切正常,继续。
但是,如果我收到 403 拒绝访问错误,如何在 PHP 中捕捉到这个错误,以便返回用户友好的警告?
要从对 的调用中检索 HTTP 响应代码simplexml_load_file()
,我知道的唯一方法是使用 PHP 鲜为人知的$http_response_header
. 每当您通过 HTTP 包装器发出 HTTP 请求时,此变量都会自动创建为一个单独包含每个响应标头的数组。换句话说,每次您使用simplexml_load_file()
或file_get_contents()
使用以“http://”开头的 URL
print_r()
您可以使用诸如检查其内容
$xml = @simplexml_load_file($request_url);
print_r($http_response_header);
但是,在您的情况下,您可能希望单独检索 XML,file_get_contents()
然后测试您是否收到 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);
您必须使用cURL 模块或HTTP 模块之类的东西来获取文件,然后使用它们提供的功能来检测 HTTP 错误,然后将字符串从它们传递到simplexml_load_string。