C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: httpsでヘッダ情報を得るには


(過去ログ 112 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■66262 / inTopicNo.1)  httpsでヘッダ情報を得るには
  
□投稿者/ ビビット (5回)-(2013/04/11(Thu) 19:23:14)

分類:[.NET 全般] 

お世話になっております。

ネット上のファイルをダウンロードする場合に、
下記のようなHTTPヘッダ情報をまず取得し、
前回と比較してDateに更新があればダウンロードすることとしています。

HTTPヘッダ例:
HTTP/1.0 302 Found
Location: http://www.google.co.jp/
Content-Type: text/html; charset=UTF-8
<中略>
Date: Thu, 11 Apr 2013 10:04:16 GMT


HTTP通信では上手くいっていますが、
HTTPSの場合はどのようにすればよいかご教授いただけませんでしょうか?


以下HTTP通信でのヘッダ取得コードとなり、
以下のURLを参考にさせていただいたものです。
http://www.kisoplus.com/net/

===<コード転載>===
string kurl = textBox1.Text.Replace("http://", "");
string[] url = kurl.Split('/');
tc.Connect(url[0],80);
url[0] = "";
if ((kurl = String.Join("/", url)) == "") kurl = "/";
NetworkStream nstr = tc.GetStream();

//HTTPコマンドをネットストリームに送る
byte[] buf = Encoding.ASCII.GetBytes("HEAD " + kurl + " HTTP/1.0\r\n\r\n");
nstr.Write(buf, 0, buf.Length);
nstr.Flush();
byte[] str = new byte[1024];
nstr.Read(str, 0, str.Length);
textBox2.Text = Encoding.ASCII.GetString(str);
tc.Close();

===<ここまで>===

ポート番号を変更してみても、
400 Bad Request
と返ってきます。。。

主たる目的としては、常にダウンロードするのではなく、
更新のある場合に限ってダウンロードする、ということであります。


SslStream クラスが存在するようですが、
http://msdn.microsoft.com/ja-jp/library/system.net.security.sslstream(VS.80).aspx
をみても、恥ずかしながらどの部分がヘッダー取得に関連しているのかがわかりません。


どなたかご教授いただけませんでしょうか?
何卒よろしくお願いいたします。

引用返信 編集キー/
■66267 / inTopicNo.2)  Re[1]: httpsでヘッダ情報を得るには
□投稿者/ Azulean (133回)-(2013/04/11(Thu) 22:05:29)
バイト単位で扱って確かに実現できますが、もっと高レベルなやり方もあるはずです。
低レベルなやり方で進めるなら、SSL の暗号化も自分で実現しないといけません。

ちなみに、Web 上で見つけた WebRequest を使う方法では http も https もそれなりに動いていそうでした。
textBox1.Text が URL (http:// or https:// で始まるもの)、textBox2.Text に得られたヘッダを載せるというものです。

System.Net.WebRequest request = System.Net.WebRequest.Create(textBox1.Text);
request.Method = "HEAD";
var response = request.GetResponse();
var builder = new StringBuilder();
foreach (var key in response.Headers.Keys)
{
    builder.AppendFormat("{0} = {1}", key, string.Join(", ", response.Headers.GetValues((string)key)));
    builder.AppendLine();
}
textBox2.Text = builder.ToString();

引用返信 編集キー/
■66339 / inTopicNo.3)  Re[2]: httpsでヘッダ情報を得るには
□投稿者/ ビビット (7回)-(2013/04/16(Tue) 16:31:16)

ご返信遅くなりまして申し訳ありません。
ご教授頂いた方法で上手くいきました!

ネットで見つけたサンプルにとらわれて、
高レベルで処理することまで考えられませんでした。

大変助かりました。ありがとうございました。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -