基本的なhttpプログラミングについてのメモ書きです。

C#でhttpクライアント側のプログラミングを書く時はHttpWebRequest、HttpWebResponseクラスが便利です。

下の関数は引数で渡したURLのHTMLページを取得してテキストボックス(testBox1)に表示しています。

private void testWebRequest(string sUrl)
{

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(sUrl);
req.UserAgent = "C# UserAgent";

HttpWebResponse res = (HttpWebResponse)req.GetResponse();

Stream st = res.GetResponseStream();
StreamReader sr = new StreamReader(st);
string html = sr.ReadToEnd();
sr.Close();
st.Close();

textBox1.Text = html;
}

なお、上のプログラムではクライアント情報としてヘッダ情報UserAgentに「C# UserAgent」をセットしています。

また、こうなるとこのヘッダ情報がしっかりサーバ側に渡っているのかが気になると思いますが、phpの場合はグローバル変数(ハッシュ)$SERVERでサーバ情報やヘッダ情報(クライアント情報)を確認できます。

UserAgentを確認する時は、HTTP_USER_AGENTをキーにして $_SERVER["HTTP_USER_AGENT"] で確認できます。

HTTP_USER_AGENT以外に何が見れるのか?そしてキーの名前は? 

これらを知りたい時は下のコードのように$_SERVERをforeach文でまわせば使えるサーバ変数が確認できます。

foreach($_SERVER as $key => $value){
echo "■ ".$key."<br />\n";
// echo "■ ".$key."  ■■■ ".$value."<br />\n";
// echo "■ ".$key."  ■■■ ".$_SERVER[$key]."<br />\n";
}

なお、上のプログラムではキーは表示してるけど、そのキーの値はコメントアウトしています。これは「DOCUMENT_ROOT」「PATH」「SERVER_SOFTWARE」・・・あたりはちょっとセキュリティ的に表示しちゃうのはどうかと思ったからです。自分で試す時は公開しないように気をつけてください。


HTMLページの途中からや一部分のみ要求したい場合は「HttpWebRequestのAddRangeメソッドでレジューム機能を使う/C#プログラミング 」を参考にしてください。

また、サーバからのHTTPレスポンスのヘッダ情報を調べるには「C#のHttpWebResponseでHTTP応答ヘッダ情報を見る 」を参考にしてください

お安いレッツノートPCをネットで購入する!
100000円以下のお安いおすすめノートPC(let's noteシリーズ)をネットで購入!
格安・激安のLet's noteシリーズ(パナソニック)ノートパソコン情報

・php,C#初心者のためのおすすめ書籍の紹介

やさしいPHP やさしいシリーズ/高橋 麻奈
¥2,730
Amazon.co.jp

猫でもわかるC#プログラミング (猫でもわかるプログラミングシリーズ)/粂井 康孝
¥2,625
Amazon.co.jp




参考サイト
WebRequest/WebResponseクラスでWebページを取得するには?@it
サーバ変数:$_SERVER