3

HttpWebRequestを使用するときにCookieの処理に問題があります。

小さなコミュニティのウェブサイトで自分のアカウントを管理するプログラムを作成しています。getおよびpostリクエスト(ログインの成功など)を行うことはできますが、ログインを維持するためにセッションCookieを維持できません。

私のコードは次のようになります:

this.cookies = new CookieCollection();
request = (HttpWebRequest)WebRequest.Create(requestURL);
request.CookieContainer = new CookieContainer();
...
request.CookieContainer.Add(cookies);
ASCIIEncoding encodage = new System.Text.ASCIIEncoding();
byte[] data = encodage.GetBytes(Post);
request.AllowAutoRedirect = true;
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "whatever";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Method = "POST";
request.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
request.AllowWriteStreamBuffering = true;
request.ContentLength = data.Length;
newStream = request.GetRequestStream();
request.ProtocolVersion = HttpVersion.Version11;
newStream.Write(data, 0, data.Length);
...
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
this.cookies = response.Cookies;
...

response.Cookiesは常に空(長さ:0)であり、空であってはなりません。誰かが私が間違っていることを教えてもらえますか?応答に関連付けられたCookieがないのはなぜですか?前もって感謝します

4

1 に答える 1

6

Request.Cookiesコレクションから読んでください。Response.Cookiesで使用できるのは、サーバー側で追加された新しいCookieのみです。Request.Cookiesには、すべての(Request + Response)Cookieが含まれています。

上記を考慮すると、サーバーによって追加されたCookieがないように思われるため、応答でCookieが取得されません。それは理にかなっていますか ?

于 2012-07-17T16:53:34.993 に答える