Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WebBrowser cookie的c#WebRequest_C#_Browser_Webrequest - Fatal编程技术网

使用WebBrowser cookie的c#WebRequest

使用WebBrowser cookie的c#WebRequest,c#,browser,webrequest,C#,Browser,Webrequest,我使用WebBrowser登录到一个站点,然后我想使用正则表达式获取一些数据,但webRequest没有使用web浏览cookie 我的网络浏览器在公共场合, 有没有办法在webRequest中使用WebBrowser cookie?您可以在webRequest中使用CookieContainer web_cookies = new CookieContainer(); // Create a 'WebRequest' object with the specified url.

我使用WebBrowser登录到一个站点,然后我想使用正则表达式获取一些数据,但webRequest没有使用web浏览cookie

我的网络浏览器在公共场合,
有没有办法在webRequest中使用WebBrowser cookie?

您可以在webRequest中使用CookieContainer

 web_cookies = new CookieContainer();
 // Create a 'WebRequest' object with the specified url.                 
 HttpWebRequest myWebRequest = (HttpWebRequest)WebRequest.Create(url);

 myWebRequest.CookieContainer = web_cookies;
希望这有帮助

好的,您要登录。这是另一回事。您可以为此使用NetworkCredential

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;

这将适用于大多数站点,但是使用子域的站点可能会出现问题

这是silverlight吗? 如果是这样的话,因为silverlight 3如果您使用浏览器网络堆栈,那么您应该免费获得cookies。默认情况下,使用WebRequest.create()方法创建n HttpWebrequest时,将获得浏览器堆栈。注意:如果您使用CreateHTTP方法,您将获得一个客户端堆栈,默认情况下,该堆栈不包括浏览器cookie(如前所述,您必须进行欺骗才能获得它们)


请参阅silverlight中的网络堆栈,因为版本3

非常简单,我想使用它获取新闻:)但是站点受登录页面保护,因此这种方式最容易登录:)我不确定您想要做什么。也许这个页面会有帮助:实际上,大多数网站使用cookies进行身份验证而不是HTTP身份验证,所以使用networkCredential不会有帮助。附加cookie容器将工作,只要它得到IE cookie;如果没有,PInvoke to InternetGetCookie()此解决方案似乎不再有效,因为Cookie使用了“httponly”修饰符。您可以通过InternetGetCookieEx访问HttpOnly Cookie
    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;
    }