アフィリエイト広告を利用しています

広告

posted by fanblog

HTTP ステータスは、文字で判定しちゃだめな理由(HTTP/1.1 200 OK以外のパターンがある)

Rakuten Web APIで商品アイテム検索するPHPプログラムを利用しています。PHPのfile_get_contents関数でWeb Requestしています。
リクエスト部分するソースは↓こんな感じです。
$context = stream_context_create(array('http' => array('igore_errors' => true)));
$response = file_get_contents($url, false, $context);
  1. php.iniに「allow_url_fopen = On」設定が必要な場合があります。
  2. リクエストした応答は$responseに入ってきます。
  3. 応答部のヘッダは、PHP予約変数 $http_response_header[php.net]配列を参照するとわかります。
$http_response_header配列は直前に行なったwebリクエスト(file_get_contents)の内容となります。通常以下のように配列の0番目にHTTPのステータスがあります。
  • [0]"HTTP/1.1 200 OK"
  • [1]"Date: Sat, 12 Apr 2008 17:30:38 GMT"
  • [2]"Server: Apache/2.2.3 (CentOS)"
  • [3]"Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"
  • [4]"ETag: "280100-1b6-80bfd280""
  • [5]"Accept-Ranges: bytes"
  • [6]"Content-Length: 438"
  • [7]"Connection: close"
  • [8]"Content-Type: text/html; charset=UTF-8"


これを参考に「OK」=成功、「OK」なしなら失敗という判断をしていました。
ところが・・・楽天APIのサーバーが変わったようで、結果が変わっていました。
[0]"HTTP/1.1 200 200"
OKがありません。プログラムは「 200 」に変更しました。

HTTPステータスは文字列ではなく数値で判断するのが良さそうですね。

 

  • 初期費用0円(2022年8月4日に撤廃)
  • 安定したサイト運営が可能(CPU/メモリ リソース保証 6コア/8GB〜)
  • 契約中は独自ドメインつき 独自ドメイン永久無料特典があります
  • 最大10日間無料で、サーバーのお試し利用ができます
  • ディスクキャッシュも高速 NVMe SSDを採用(300GB〜)
  • 大量アクセスでも安心 転送量は無制限

 

 

posted by scripts at 14:54 | Comment(0) | TrackBack(0) | php
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/11305516
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
最新記事
最新コメント
タグクラウド
カテゴリアーカイブ
×

この広告は30日以上新しい記事の更新がないブログに表示されております。