问题
I am logging into a site using a WebBrowser, then i want use regex to get some data , but webRequest didnt use web Browse cookie ,
my webBrowser is in public , is there any way to using WebBrowser cookie in webRequest ?
回答1:
public CookieContainer GetCookieContainer()
{
CookieContainer container = new CookieContainer();
foreach (string cookie in webBrowser1.Document.Cookie.Split(';'))
{
string name = cookie.Split('=')[0];
string value = cookie.Substring(name.Length + 1);
string path = "/";
string domain = ".google.com"; //change to your domain name
container.Add(new Cookie(name.Trim(), value.Trim(), path, domain));
}
return container;
}
This will work on most sites, however sites that use subdomains might be a problem.
回答2:
You can use a CookieContainer for a Webrequest.
web_cookies = new CookieContainer();
// Create a 'WebRequest' object with the specified url.
HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url);
myWebRequest.CookieContainer = web_cookies;
Hope this helps.
Ok, you want to do a log in. Thats is different story. You can use NetworkCredential for that.
public string get_secure_webpage(string url, string username, string password)
{
WebRequest myWebRequest = WebRequest.Create(url);
NetworkCredential networkCredential = new NetworkCredential(username, password);
myWebRequest.Credentials = networkCredential;
...
回答3:
is this silverlight? if so, since silverlight 3 if you use the browser network stack than you should get cookies for free. By default you get the browser stack when you create n HttpWebrequest using the WebRequest.Create() method. note if you use CreateHTTP method, you get a client stack, which does not include browser cookies by default (you have to do trickery to get them, as described previously)
see http://msdn.microsoft.com/en-us/library/dd920295(VS.95).aspx about the network stacks in silverlight since version 3
来源:https://stackoverflow.com/questions/650536/c-sharp-webrequest-using-webbrowser-cookie