【问题标题】:Cannot get cookies in wp7 using HttpWebRequest无法使用 HttpWebRequest 在 wp7 中获取 cookie
【发布时间】:2012-03-08 17:48:24
【问题描述】:

我正在尝试在发布请求中保存 cookie。这是我的代码:

        CookieContainer myCookieContainer = new CookieContainer();
        HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
        myHttpWebRequest.UserAgent = userAgent;
        myHttpWebRequest.CookieContainer = myCookieContainer;
        myHttpWebRequest.Method = "POST";

        byte[] postdata = encoding.GetBytes(submitString);

        myHttpWebRequest.BeginGetRequestStream(async1 =>
        {
            using (Stream stream = myHttpWebRequest.EndGetRequestStream(async1))
                stream.Write(postdata, 0, postdata.Length);
            myHttpWebRequest.BeginGetResponse(async2 =>
            {
                HttpWebResponse rep = (HttpWebResponse)myHttpWebRequest.EndGetResponse(async2);
                CookieCollection cookies = rep.Cookies;
                using (Stream stream = rep.GetResponseStream())
                using (StreamReader sr = new StreamReader(stream))
                {
                    String content = sr.ReadToEnd();
                    if (pageDownloadedEventHandler != null)
                        pageDownloadedEventHandler(content);
                }
            }, null);
        }, null);

总是 CookieContainer 是空的。 如何获取 cookie?

【问题讨论】:

  • 您发送的请求没有 cookie,您确定服务器实际上设置了要传回的任何 cookie 吗?
  • @JoachimIsaksson 是的,我在wireshark 中看到了cookie

标签: windows-phone-7 cookies httpwebrequest


【解决方案1】:

您的代码似乎很完美,如果服务器向您发回任何 cookie,您应该在 rep.Cookies 以及 myCookieContainer 中看到它们。

如果您想确保使用 Fiddler 或 Wireshark 来分析 HTTP 网络流量并查找 cookie,但如果我是对的,您将找不到它们。在这种情况下,我的想法是分析使用浏览器执行相同请求的网络流量,也许 php/asp.net/other 应用程序由于缺少一些请求标头而决定不设置 cookie。

【讨论】:

  • 感谢您的建议。我使用了wireshark,发现服务器确实返回了cookie。我发现该站点的过程必须两次确认,而我所做的是第二次传递一个空的 pageDownloadedEventHandler。在我将其更改为真正的处理程序后,cookie 出现了。是不是因为异步代码不会同步cookieContainer中的cookie?
  • cookie 容器也会在异步请求的情况下同步。可能是因为您没有指定下载的事件处理程序,库假定您不需要任何响应数据,因此它没有收到任何响应数据。
猜你喜欢
  • 2012-08-10
  • 1970-01-01
  • 2013-04-29
  • 2013-03-08
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 2023-01-21
  • 1970-01-01
相关资源
最近更新 更多