无法从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多一点。

+0

可以请你告诉我如何从Windows手机中的URL获取cookie? – Aju