1

次のコマンドを実行していますが、例外が発生します。

$headers = get_headers(" http://www.moneysupermarket.com/mortgages/ ", 1);

この例外を処理するにはどうすればよいですか (私の場合、例外が発生しているため、この URL は無視してください)。

私が試してみました:

  1. トライ/キャッチ
  2. このリンクのコード: https://stackoverflow.com/a/6184127/1486303

ただし、このエラーはまだ表示されます (無視したい)。

ありがとう!

4

2 に答える 2

3

例外はありません。get_headers() はエラー時に FALSE を返します。警告メッセージが表示されますが、それも例外ではないため、キャッチできません。警告およびその他のエラーについては、http ://www.php.net/manual/en/function.set-error-handler.php を参照してください。

于 2012-07-17T08:51:27.677 に答える
3

新しいバージョン

繰り返しますが、これは質問の正しい答えではありませんが、エラーを回避すると、期待される結果が得られます。

get_headers は Agent なしで HTTP GET を実行するため、 moneysupermarket.com はそれを好まないため、 ini_setを使用してリクエストでデフォルトのユーザー エージェントを設定すると、すべてうまく機能します。

ini_set("user_agent","Mozilla custom agent");
$headers = get_headers("http://www.moneysupermarket.com/mortgages/", 1);

リクエストが適切にフォーマットされていない場合、moneysupermarket.com が接続をリセットしたようです。

// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.moneysupermarket.com/mortgages/");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla custom agent");

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
于 2012-07-17T08:40:55.320 に答える