C#で質問です。


C#の勉強で簡単なブラウザを作成しているのですが
その中でこちらからGETで投げる情報がいまいちよくわかりません。
現在は

byte [] data = System.Text.Encoding.ASCII.GetBytes("GET / HTTP/1.1 User-Agent: Mozilla/4.0\r\n\r\n");

このようにGET部分を記述しております。
ホームページ自体は表示されて問題はないのですが、レスポンスを見ると400 Bad Requestと表示されているため
GETの部分に問題があると考えております。
パケットキャプチャなどでGETを見てみましたがいまいちよくわかりません。
どなたかアドバイスいただければと思います。

回答の条件
  • 1人2回まで
  • 登録:2007/11/08 00:39:54
  • 終了:2007/11/09 00:22:19

回答(1件)

id:takabow No.1

noname回答回数51ベストアンサー獲得回数142007/11/08 01:58:08

ポイント60pt

GET / HTTP/1.1の後に改行がないからでは?

GET / HTTP/1.1\r\nUser-Agent: Mozilla/4.0\r\n\r\n

HTTPのプロトコルの詳細は以下を参考にどうぞ

http://siisise.net/rfc2616-HTTP1.1-ja.txt

http://www.studyinghttp.net/header

id:quocard

ありがとうございます。

ためしに改行をいれてみましたがBasRequestに変化はありませんでした。

ほかにもいろいろと試して見ます。

2007/11/08 07:59:34
  • id:takabow
    あ、HTTP/1.1 ではHostフィールドが必須でした。
    http://www.studyinghttp.net/header#Host

    つまりHTTP/1.1で最低限の書式は、接続先ホストのURIを記述した、
    GET / HTTP/1.1\r\nHost: yahoo.co.jp\r\n\r\n
    となります。

    User-Agentまで入れるのでしたら、
    GET / HTTP/1.1\r\nHost: yahoo.co.jp\r\nUser-Agent: Mozilla/4.0\r\n\r\n
    のような形になるかと思います。

    一応telnetで動作確認したところ、上記の記述で200 OKが帰ってきました。
  • id:quocard
    ありがとうございます。
    記載しているとおりにしたところうまくいきました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません