Windows phone 7 无法使用HttpWebRequest获取wp7中的Cookie
我正试图在post请求中保存cookies。这是我的密码:Windows phone 7 无法使用HttpWebRequest获取wp7中的Cookie,windows-phone-7,cookies,httpwebrequest,Windows Phone 7,Cookies,Httpwebrequest,我正试图在post请求中保存cookies。这是我的密码: CookieContainer myCookieContainer = new CookieContainer(); HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); myHttpWebRequest.ContentType = "application/x-www-form-urlencod
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发回给您,您应该在rep.Cookie以及myCookieContainer中看到它们
如果您想确保使用Fiddler或Wireshark分析HTTP网络流量并查找cookies,但如果我是对的,您将找不到它们。在这种情况下,我的想法是使用浏览器分析执行相同请求的网络流量,可能是php/asp.net/other应用程序由于缺少一些请求头而决定不设置Cookie。您的代码似乎很完美,如果服务器将任何Cookie发送给您,您应该在rep.Cookie以及myCookieContainer中看到它们
如果您想确保使用Fiddler或Wireshark分析HTTP网络流量并查找cookies,但如果我是对的,您将找不到它们。在这种情况下,我的想法是使用浏览器分析执行相同请求的网络流量,可能是php/asp.net/other应用程序由于缺少一些请求头而决定不设置Cookie。您发送的请求没有Cookie,您确定服务器确实设置了要传回的Cookie吗?@JoachimIsaksson是,我在Wiresharky中看到Cookie你发送的请求没有Cookie,你确定服务器真的设置了要传回的Cookie吗?@JoachimIsaksson是的,我在Wiresharkthank中看到了Cookie以供你建议。我使用wireshark,发现服务器确实返回了cookies。我发现该站点的过程必须两次确认,我所做的是第二次传递一个空页面DownloadedEventHandler。在我把它改成真正的处理器后,饼干出现了。这是因为异步代码不会同步cookieContainer中的cookie吗?在异步请求的情况下,cookie容器也会同步。可能是因为您没有指定下载的事件处理程序,所以库假设您不需要任何响应数据,所以它没有收到任何响应数据。谢谢您的建议。我使用wireshark,发现服务器确实返回了cookies。我发现该站点的过程必须两次确认,我所做的是第二次传递一个空页面DownloadedEventHandler。在我把它改成真正的处理器后,饼干出现了。这是因为异步代码不会同步cookieContainer中的cookie吗?在异步请求的情况下,cookie容器也会同步。可能是因为您没有指定下载的事件处理程序,所以库假设您不需要任何响应数据,所以它没有接收任何响应数据。