n-hirokiのプログラミング軌跡

プログラミングのメモ

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

f:id:n-hiroki_zero:20160604091835p:plain

ヘッダ部

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通信に触れてみました。

基礎ができないと応用ができないので、復習を兼ねて書きました。

参考になれば幸いです。