相关疑难解决方法(0)

将CookieContainer与WebClient类一起使用

我之前使用过带有HttpWebRequest和HttpWebResponse会话的CookieContainer,但现在,我想将它与WebClient一起使用.据我所知,没有像HttpWebRequests(request.CookieContainer)那样的内置方法.如何从CookieContainer中的WebClient收集cookie?

我用Google搜索并找到以下示例:

public class CookieAwareWebClient : WebClient
{
    private readonly CookieContainer m_container = new CookieContainer();

    protected override WebRequest GetWebRequest(Uri address)
    {
        WebRequest request = base.GetWebRequest(address);
        HttpWebRequest webRequest = request as HttpWebRequest;
        if (webRequest != null)
        {
            webRequest.CookieContainer = m_container;
        }
        return request;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?

c# cookies webclient httpwebrequest cookiecontainer

142
推荐指数
5
解决办法
13万
查看次数

HtmlAgilityPack.HtmlDocument Cookies

这适用于在脚本中设置的cookie(可能在脚本标记内).

System.Windows.Forms.HtmlDocument执行这些脚本,document.cookie=etc...可以通过其Cookies属性检索cookie集(如).

我假设HtmlAgilityPack.HtmlDocument不这样做(执行).我想知道是否有一种简单的方法来模拟System.Windows.Forms.HtmlDocument功能(cookies部分).

任何人?

javascript cookies dom html-agility-pack

5
推荐指数
1
解决办法
6341
查看次数

为什么我的WebClient大部分时间都会返回404错误,但并非总是如此?

我想在我的程序中获取有关Microsoft Update的信息.但是,服务器在大约80%的时间返回404错误.我将有问题的代码归结为此控制台应用程序:

using System;
using System.Net;

namespace WebBug
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                try
                {
                    WebClient client = new WebClient();
                    Console.WriteLine(client.DownloadString("https://support.microsoft.com/api/content/kb/3068708"));
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.ReadKey();
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我必须经历几次循环,直到得到实际响应:

远程服务器返回错误:(404)未找到.
远程服务器返回错误:(404)未找到.
远程服务器返回错误:(404)未找到.
<div kb-title title ="客户体验和诊断遥测更新[...]

我可以随时打开并强制刷新(Ctrl + F5)我浏览器中的链接,但它会显示正常.

问题发生在具有两个不同互联网连接的两台不同机器上.
我也使用Html Agility Pack测试了这个案例,但结果相同.其他网站不会出现
此问题.(根部工作正常100%)https://support.microsoft.com

为什么我会得到这个奇怪的结果?

c# http-status-code-404 web

3
推荐指数
1
解决办法
3914
查看次数