2013-03-27 67 views
0

我没有cookie的经验,我试图使用cookie(我从httpwebrequestPOST方法)访问一个网站。在POST方法中,我完成了认证部分,最后我得到了cookie。我不知道如何使用这个cookie访问一个网站,它类似于这个HttpWebRequest POST Method使用来自httpwebrequest的cookie访问网站windows phone

希望任何人都可以给我一些建议,指针或一些示例代码。谢谢你的帮助。

这是我迄今为止的代码。

private void GetResponseCallback(IAsyncResult asynchronousResult) 
     { 
      HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState; 
      // End the operation 
      HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult); 

      Stream streamResponse = response.GetResponseStream(); 
      StreamReader streamRead = new StreamReader(streamResponse); 

      using (IsolatedStorageFile isf = 
       IsolatedStorageFile.GetUserStoreForApplication()) 
      { 
       using (IsolatedStorageFileStream isfs = isf.OpenFile("CookieExCookies", 
        FileMode.OpenOrCreate, FileAccess.Write)) 
       { 
        using (StreamWriter sw = new StreamWriter(isfs)) 
        { 
         foreach (Cookie cookieValue in response.Cookies) 
         { 
          sw.WriteLine(cookieValue.ToString()); 
         } 
         sw.Close(); 
        } 
       } 
      } 
      // Close the stream object 
      streamResponse.Close(); 
      streamRead.Close(); 
      response.Close(); 

      //allDone.Set(); 
     } 

cookie存储在文本框

private void ReadFromIsolatedStorage() 
    { 
     using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (IsolatedStorageFileStream isfs = 
       isf.OpenFile("CookieExCookies", FileMode.OpenOrCreate)) 
      { 
       using (StreamReader sr = new StreamReader(isfs)) 
       { 
        tbTesting.Text = sr.ReadToEnd(); 
        sr.Close(); 
       } 
      } 
     } 
    } 
+1

看。 – 2013-03-27 06:08:13

回答

0

您可以使用的CookieContainer类的获取和设置的cookie。当你使用它时,它会为你处理所有事情。您不必手动设置cookie。检查下面的代码。

首先创建一个CookieContainer类的实例。

CookieContainer cookieContainer = new CookieContainer(); 

然后使用它进行认证,然后将其分配给每个请求你在的CookieContainer类用于身份验证的内HttpWebRequest的

//Login request to get the cookie 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://mydomain.com/login.svc"); 
req.Method = "POST"; 
if (req.SupportsCookieContainer) 
    req.CookieContainer = cookieContainer; 
.. rest of your code.. 

//Any other request which needs a cookie 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://mydomain.com/getuserdata.svc"); 
req.Method = "POST"; 
if (req.SupportsCookieContainer) 
    req.CookieContainer = cookieContainer; 
.. rest of your code.. 
+0

Thx @nkchandra。我已经完成了登录身份验证部分,并获得了会话cookie,以及我如何使用此会话cookie访问网页? – likewer 2013-03-28 00:40:13

+0

如果您使用我遵循的相同流程,它会更好。否则,你可以使用'req.CookieContainer.SetCookie()'方法 – nkchandra 2013-03-28 04:59:46

+0

第二种post方法可以让webbrowser在登录后显示页面吗? – likewer 2013-03-28 05:32:54

相关问题