1

私は次のPHPを使用しています:

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

私が使う:

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

応答のステータスを確認するには。200 ベニング すべて問題ありません。続けてください。

ただし、403 アクセス拒否エラーが発生した場合、PHP でこれをキャッチして、ユーザー フレンドリーな警告を返すにはどうすればよいでしょうか?

4

2 に答える 2

8

への呼び出しから 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);

ただし、あなたのケースでは、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);
于 2010-01-21T13:31:19.897 に答える
0

cURL モジュールHTTP モジュールなどを使用してファイルを取得し、それらが提供する機能を使用して HTTP エラーを検出し、それらの文字列をsimplexml_load_stringに渡す必要があります。

于 2010-01-21T01:12:58.287 に答える