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);
- php.iniに「allow_url_fopen = On」設定が必要な場合があります。
- リクエストした応答は$responseに入ってきます。
- 応答部のヘッダは、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ステータスは文字列ではなく数値で判断するのが良さそうですね。
コメント