无法从HttpWebResponse饼干在Windows Phone 7
问题描述:
我来这里有什么问题彻底糊涂了。我对CookieContainer
的理解必须完全错误。我正在尝试登录到我的机器上托管的网站。我将小提琴手设置为代理,因此我可以读取流量。无法从HttpWebResponse饼干在Windows Phone 7
每次我尝试查看Windows Phone上的饼干,饼干容器总是空的。我尝试了很多不同的东西来获得容器,但一切都失败了。这是我想的最后一件事:
CookieContainer cc = new CookieContainer();
HttpWebRequest request = WebRequest.CreateHttp("http://localhost:8888/account/logon");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.CookieContainer = cc;
request.BeginGetRequestStream(streamResult =>
{
HttpWebRequest xR = streamResult.AsyncState as HttpWebRequest;
Stream stream = xR.EndGetRequestStream(streamResult);
StreamWriter sw = new StreamWriter(stream);
sw.Write("username=user1&password=1111");
sw.Close();
xR.BeginGetResponse(responseResult =>
{
HttpWebRequest yR = responseResult.AsyncState as HttpWebRequest;
HttpWebResponse response = yR.EndGetResponse(responseResult) as HttpWebResponse;
response.Close();
Dispatcher.BeginInvoke(() => MessageBox.Show("cc count: " + cc.Count.ToString() + "\nresponse count: " + response.Cookies.Count));
}, xR);
}, request);
但是,如果我在一个控制台应用程序使用完全相同的代码,容器“CC”有饼干!
CookieContainer cc = new CookieContainer();
HttpWebRequest request = WebRequest.CreateHttp("http://localhost:8888/account/logon");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.CookieContainer = cc;
request.BeginGetRequestStream(streamResul =>
{
HttpWebRequest xR = streamResul.AsyncState as HttpWebRequest;
Stream stream = xR.EndGetRequestStream(streamResul);
StreamWriter sw = new StreamWriter(stream);
sw.Write("username=user1&password=1111");
sw.Close();
xR.BeginGetResponse(responseResult =>
{
HttpWebRequest yR = responseResult.AsyncState as HttpWebRequest;
HttpWebResponse response = yR.EndGetResponse(responseResult) as HttpWebResponse;
response.Close();
Console.WriteLine("cc count: {0}\nresponse count: {1}", cc.Count.ToString(), response.Cookies.Count);
}, xR);
}, request);
Console.Read();
服务器正在发送我每次测试时都要查找的两个cookie。然而,无论出于何种原因,Windows Phone代码都不会获得这些cookie。这与这个问题非常相似:Cannot get cookies in wp7 using HttpWebRequest但是我不明白解决方案是什么。
答
哇,我觉得自己像一个傻瓜。它一直在努力...也许对其他人这是显而易见的,但我错过了它。问题是,由于正在发回的cookie是HttpOnly
,即使您要求cookie的数量,cookie容器也不会公开它们。
虽然在控制台版本中,我可以看到有两个,但我想用于windows phone的System.Net.dll锁定了CookieContainer
多一点。
可以请你告诉我如何从Windows手机中的URL获取cookie? – Aju