2012/06/12更新

[Web] HTTPリクエストの中身を学んでみた。GETやPOSTの違いなど

このエントリーをはてなブックマークに追加            

HTTPのリクエストは、Java, JavaScript, PHP, Objective-Cなど 様々な言語やフレームワークを使って送信するサービス開発を、多々行ってきました。
でも、HTTPリクエストについてちゃんと知ってるかと言うとビミョーな感じで。 今回は、HTTPリクエストについて学んだので、その内容をブログに書きたいと思います。

Struture of HTTP Request



HTTPリクエストの構成

HTTPリクエストは、大きく3つの部分に分かれるようです。
  1. HTTPリクエスト行
  2. HTTPヘッダー行
  3. HTTPボディ部
GET通信では、上記のうち「HTTPリクエスト行」と「HTTPヘッダー行」を送信して、 POST通信では、「HTTPリクエスト行」と「HTTPヘッダー行」と「HTTPボディ部」を送信するようです。
具体的な構造は以下となっているようです。
Struture of HTTP Request




HTTPリクエストの中身

HTTPリクエストの中身は、具体的には以下のような内容のようです。
(GET通信の場合)
GET /www.yoheim.net/?key1=value1&key2=value2 HTTP/1.1
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:Shift_JIS,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ja,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Cookie:utma=something;
Host:www.yoheim.net
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5


(POST通信の場合)
POST /www.yoheim.net/ HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: text/plain
Content-Length: 23

key1=value1&key2=value2

1行目でHTTPメソッド(GETとかPOSTとか)を指定するんですね。
それで、HTTPリクエストで、User-AgentとかCookieとかAcceptとか色々な情報を指定して、 そしてPOSTの場合には、1行空けてボディ部が定義されています。
なおGET通信の場合にデータを送信する際には、1行目の送信先URLにクエリパラメータとして付与するようです。




おまけ

HTMLを記載する際に、以下のタグを記載するかと思います。
<meta http-equiv="xxx" content="yyy">
これは、xxxというヘッダ名でyyyという値を持つヘッダをHTTPヘッダ部に設定しなさいという命令のようです。
だから、このタグでエンコーディングとかの指定ができるんですね。初めて知りました。


あともう一つ。HTTPリクエストの内容を見てみたいという場合には、Firefoxならfirebugsなどの開発ツールを 導入すると見ることが出来るようです。Chrome(←私はこれ)なら、最初から入っている開発者 ツールでNetwork→Headersなどで、見ることができました。




最後に

HTTPリクエストの内容を知ることが出来て良かった。
これで自分でも文字を連結してHTTPリクエストを作成して、送付することができそうです。
また、Google Reader APIなどのAPIを使う時に、ヘッダに指定されたキーを指定する事も、 簡単にできそうです(*´∇`*)

最後までお付き合い頂きましてありがとうございました☆






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。