前提
C#を使用したCookie認証が上手くいきません(C#初心者です)。
実現したいこと
(1)CGI::Sessionモジュールを使用したセッション管理を行っているサイト(https://www.kent-web.com/pwd/protect/enter.cgi)にIDとPWを入力する。IDとPWは共にguestです。
(2)レスポンスとして戻ってくるCookie情報をprotect.cgiに送ることで保護されたページの情報にアクセスする
発生している問題・エラーメッセージ
(1)でCookieContainerにCookie情報が格納されない為、(2)に進めません。アドバイスを頂きたくお願いします。
該当のソースコード
C#
1namespace ConsoleApplication1 2{ 3 public class Program 4 { 5 static void Main() 6 { 7 // WebRequestによるCookie認証 8 // POSTしてCookieContainerに書き込む 9 var data = Encoding.ASCII.GetBytes(string.Join("&", 10 new[] { "id=guest", "pw=guest" })); 11 var cookieContainer = new CookieContainer(); 12 var req = (HttpWebRequest)WebRequest.Create("https://www.kent-web.com/pwd/protect/enter.cgi"); 13 req.CookieContainer = cookieContainer; 14 req.Method = "POST"; 15 req.ContentType = "application/x-www-form-urlencoded"; 16 req.ContentLength = data.Length; 17 using (var stream = req.GetRequestStream()) 18 { 19 stream.Write(data, 0, data.Length); 20 } 21 var res = req.GetResponse(); // ここでCookieContainerに書き込まれる筈ですが、ダメです。 22 23 // 以下、そのCookieを使えばアクセス可能な筈ですが、、、。 24 var reqLog = (HttpWebRequest)WebRequest.Create("https://www.kent-web.com/pwd/protect/protect.cgi"); 25 reqLog.CookieContainer = cookieContainer; // CookieContainerセット 26 var resLog = reqLog.GetResponse(); 27 using (var stream = resLog.GetResponseStream()) 28 29 using (var sr = new StreamReader(stream, Encoding.GetEncoding("shift-jis"))) 30 { 31 Console.WriteLine(sr.ReadToEnd()); // アクセスできてるのを確認 32 } 33 34 } 35 } 36}
試したこと
https://neue.cc/2009/12/17_230.htmlを基に作成しました。
上記ページの他のやり方も試しましたが駄目でした。
補足情報(FW/ツールのバージョンなど)
Windows10の Visual Studio 2019 で.NET COREで実行できるアプリケーションを.NET 5.0で作成
回答1件