HTTP通信
VisualStudioExpress2015使用VBからPostgreSQLに接続がうまくいかない。
・npgsqlが未対応になっていたこと。
・odbc driverを使用しておこなおうとしてもうまくいかない。
・グーグル先生の情報が古い。(VisualStudioExpress2015の情報がない)
なので、PHPを使用してweb上のMySQLのDBに接続に変更。
VisualStudioからHTTP通信で引数をPHPファイルに渡し、DBに保存する。
なので、HTTP通信について今一度まとめたいと思います。
HTTP通信
HTTPとは
httpとは、通信プロトコルの一つでwebサーバとクライアント間で通信するための仕組み(ルール)。
httpがないと、インターネット上のサイトを見ることができなくなるので、なくてはならない技術です。
ですが、ブラウザとWebサーバは「index.html HTTP/1.1」「HTTP/1.1 200 OK」といった文字列を送り合っているだけです。
ブラウザとWebサーバ間の通信で、どのようなデータをやり取りするかは、HTTPというルール(プロトコル)で定められています。
HTTPの仕組み
通信プロトコルの一つで、インターネット上でWebサーバーとクライアントが、相互に通信するために使用される仕組みです。
通信の流れとしては、まずWebサイトを閲覧したい人が、ブラウザを利用してサイトを公開しているWebサーバーへ、リクエストを出します。
次はWebサーバー側から、要求をしてきたブラウザに対してレスポンスがされます。
レスポンス情報には、Webサイトのコンテンツも含まれますので、返答された時点で、ブラウザ上にWebサイトが表示されることになります。
リクエストとレスポンスによって、私たちはWebサイトをみることができます。
それがHTTP通信です。
---- 例----
ヘッダ部
GET /index.html HTTP/1.1
Accept: image/jpeg, image/gif,・・・
Accept-Language: ja-JP,en-US;q=0.5
User-Agent: Mozilla/4.0・・・
Accept-Encoding: gzip, deflate
Host: www.hoge.com
Connection: Keep-Alive
ヘッダ部
HTTP/1.1 200 OK
Content-Language: 4122
Server:Apache
Date: Mon, 6 June 2016 06:35:00 GMT
・・・・
Content-Type: text/html; charset=UTF-8
ボディ部
<html>
・・・・
・・・・
</html>
リクエストの1行目「GET /index.html HTTP/1.1」に注目します。これは、リクエストラインと呼ばれるもので「リクエストの方法」「リクエストの対象」「使用するプロトコル」という情報で作られている。
今回の場合では、
GET = リクエストの方法
/index.html = リクエストの対象
HTTP/1.1 = 使用するプロトコル
となっています。
この中で一番重要な情報は、リクエストの方法のGETです。
GETはWebサーバからWebページの情報を取得する時に使用するリクエストメソッドです。
他にはPOSTリクエストというリクエストメソッドもあります。
POSTはアンケートフォームなどの情報をサーバに送りたい時に使用します。
次は、レスポンスの1行目「HTTP/1.1 200 OK」に注目します。
これはステータスラインと呼ばれるもので、リクエストを受けてWebサーバの動作した結果が表示されます。
HTTP/1.1 = 使用するプロトコル
200 OK = 動作結果
このステータスラインの「200」は「リクエストが成功した」という意味のコードです。これをステータスコードといいます。
「OK」は補足メッセージです。
HTTPではかなり多くのステータスコードがあります。
Webサーバは、リクエストされた結果どうなったかをステータスコードという数値で返します。
今回は重要なものを以下で紹介します。
200 OK = リクエストが成功した
404 Not Found = リクエストされた対象が見つからない
405 Method Not Allowed = リクエストの対象が、使用したリクエストメソッドを許可していない
500 Internal Server Error = サーバ内部でエラーが発生した
レスポンスの2行目以降は「ヘッダ部」と「ボディ部」にわかれます。
ヘッダ部にはWebサーバがブラウザに送ったレスポンスに関する情報が書かれていて、ボディ部にはレスポンスのデータの本体が書かれています。
ヘッダ部の一番下にある「Content-Type: text/html; charset=UTF-8」はContent-Typeヘッダといい、ボディ部が何のデータであるかを示しています。
・HTMLをレスポンスする場合
Content-Type:text/html; charset=UTF-8
・JPEGをレスポンスする場合
Content-Type: image/jpeg;
となります。(文字コードなどはその時により変わりますが、一般的にはUTF-8ですね)
簡単にですが、HTTP通信に触れてみました。
基礎ができないと応用ができないので、復習を兼ねて書きました。
参考になれば幸いです。