HTTPリクエストするためのクラス書いてみた
HTTPリクエスト再び
Twitter API用のライブラリがどうとか言いながら、全然公開してませんな。
スピンアウト品による、HTTPリクエストについてメモしとくです。この後にOAuthかな。そしてTwitter, Flickr, Google, YahooあたりのAPIと遊ぶ方法とか。一通り試した後なので、暇を見つけながら、内容をまとめて自分メモ的にブログ書くつもり。a-blog cmsと連携したTwitter BOTぐらいはちゃんと作って公開すっか。
APIを叩く用に
<?php
$http = new SimpleHttp();
$http->get('http://havelog.ayumusato.com');
$res = $http->header;
$body = $http->body;
if ( !($http->error) ) {
return true;
} else {
return false;
}
?>
GET!POST!で適当にリクエスト投げれて、レスポンスヘッダーもレスポンスボディも、一通り取ってこれるようにしたかったのです。API相手しか考えてないので、POSTメソッドもクエリーのやり取りしか考えられてません。
file_get_contentsとかだとレスポンスコード200以外のときのレスポンスボディを端折りやがるので、ソケット接続から始めてリクエストを書き込んで受け取って、と地味な作業を繰り返してます。地味ですけど、HTTPの仕様の勉強になります。裏でこういうやり取りされてたんですね。
ハードウェアやソフトウェアの深淵を見るには、文系の自分には叶いません。でも、たまーに少し深いところを垣間見ると、なんとなく、してやったりという気分になれます。ああ現金。
覚え書きリスト
- リクエスト時の改行コードはCR+LFで鉄板くさい
- 末尾の改行コードが足りないとシカトされることすらある
- ステータスコード204と304はレスポンスボディがない(仕様的に)
- HTTP1.1のchunkedデータは、送ってきたり送ってこなかったりする
- chunked受け取りたくなかったら1.0としてリクエスト
- phpのparse_url関数はステキ(regex書き終わった頃に教えてもらった)
- httpsはssl://に変換して、portも合わせて変える