2012-12-18 2 views
0

여기에서 문제가 무엇인지 완전히 혼동합니다. CookieContainer에 대한 제 이해가 완전히 틀려야합니다. 내 컴퓨터에서 호스팅되는 웹 사이트에 로그인하려고합니다. 필자는 프록시로 설정하여 트래픽을 읽을 수 있습니다.Windows Phone 7의 HttpWebResponse에서 쿠키를 가져올 수 없습니다.

Windows 전화에서 쿠키를 보려고 할 때마다 쿠키 컨테이너는 항상 비어 있습니다. 나는 그 컨테이너를 채울 수있을만큼 많은 다른 것들을 시도했지만 모든 것이 실패했습니다. 내가 콘솔 응용 프로그램에서 동일한 코드를 사용하는 경우

그러나
 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(); 

서버는 내가 테스트 할 때마다 찾고있는 두 가지 쿠키를 모두 보냅니다. 그러나 어떤 이유로 든 Windows 전화 코드는 쿠키를 얻지 못합니다. 이것은이 질문과 거의 같습니다 : Cannot get cookies in wp7 using HttpWebRequest 그러나 해결책이 무엇인지 이해하지 못합니다.

답변

1

와우, 나는 바보 같아. 그것은 계속 노력해 왔습니다. 아마도 다른 사람들에게 이것은 명백합니다. 그러나 나는 그것을 놓쳤습니다. 문제는 다시 보내지는 쿠키가 HttpOnly이므로 쿠키 수를 요청하더라도 쿠키 컨테이너가 쿠키를 노출하지 않는다는 것입니다.

콘솔 버전에서는 두 가지가 있음을 알 수 있지만, Windows Phone 용 System.Net.dll은 CookieContainer에 잠겨 있습니다.

+0

Windows 전화의 URL에서 쿠키를받는 방법을 알려주십시오. – Aju