2012-02-25 11 views
1

WebRequest以降のサイトにログインして、WebBrowserにサイトを表示します。WebBrowserでWebRequest Cookieを使用する

しかし、どのようにWebRequestクッキーをWebBrowserにコピーするのですか?クッキーをつかむために、事前に

おかげで、

カツペル

答えて

3

使用クッキーのコレクション、私は今月同様の書き込みに何かをしましたし、私はあなたにいくつかのサンプルコードを共有することができます:今、あなたの

static string GetFromServer(string URL, ref CookieCollection oCookie) 
    { 
     //first rquest 
     // Create a request for the URL. 
     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL); 
     request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"; 
     request.AllowAutoRedirect = false; 
     // If required by the server, set the credentials. 
     //request.Credentials = CredentialCache.DefaultCredentials; 
     request.CookieContainer = new CookieContainer(); 
     if (oCookie != null) 
     { 
      foreach (Cookie cook in oCookie) 
      { 
       request.CookieContainer.Add(cook); 
      } 
     } 

     // Get the response. 
     HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
     foreach (Cookie cook in response.Cookies) 
     { 
      oCookie.Add(cook); 
     } 
     // Display the status. 
     while (response.StatusCode == HttpStatusCode.Found) 
     { 
      response.Close(); 
      request = (HttpWebRequest)HttpWebRequest.Create(response.Headers["Location"]); 
      request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"; 
      request.AllowAutoRedirect = false; 
      request.CookieContainer = new CookieContainer(); 
      if (oCookie != null) 
      { 
       foreach (Cookie cook in oCookie) 
       { 
        request.CookieContainer.Add(cook); 
       } 
      } 
      response = (HttpWebResponse)request.GetResponse(); 
      foreach (Cookie cook in response.Cookies) 
      { 
       oCookie.Add(cook); 
      } 
     } 
     Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
     // Get the stream containing content returned by the server. 
     Stream dataStream = response.GetResponseStream(); 
     // Open the stream using a StreamReader for easy access. 
     StreamReader reader = new StreamReader(dataStream); 
     // Read the content. 
     string responseFromServer = reader.ReadToEnd(); 
     // Display the content. 
     Console.WriteLine(responseFromServer); 
     // Clean up the streams and the response. 
     reader.Close(); 
     response.Close(); 
     return responseFromServer; 
    } 

をクッキーを取得した後、webBrowserコントロールに設定するだけで、このメソッドをインポートする必要があります。

とCookieを得た後、これを呼び出す:

string cookie_string = string.Empty; 
     foreach (Cookie cook in cookieCon) 
     { 
      cookie_string += cook.ToString() + ";"; 
      InternetSetCookie(url, cook.Name, cook.Value); 
     } 
     webBrowser1.Navigate(url, "", null, "Cookie: " + cookie_string + Environment.NewLine); 

これはちょうど私のテストコードであり、主に、それはバグだらけかもしれので、MSDNからコピーされた、あなたは

+0

を扱うより多くの例外が必要な場合がありますことをご注意くださいなら、私はwininet.dllに依存していますか?それは様々なシステムやもので動作しますか? – Kacper

+0

ええと、それは良い質問ですが、私はまだよく分かりませんが、それは私が実際にそれを作ることができることを発見したものです。WebrowserコントロールはInternet Explorerを使用しているようですので、方法は私に教えてください、ありがとう –

関連する問題