C# 是否可以使用HttpClient/RestSharp自动生成标题?

C# 是否可以使用HttpClient/RestSharp自动生成标题?,c#,dotnet-httpclient,restsharp,C#,Dotnet Httpclient,Restsharp,目前,我正在使用以下RestSharp请求获取网站内容: var client = new RestClient(productLink); var request = new RestRequest(Method.GET); request.AddHeader("Cookie", "insert-cookie-content"); IRestResponse response = client.Execute(request);

目前,我正在使用以下RestSharp请求获取网站内容:

        var client = new RestClient(productLink);
        var request = new RestRequest(Method.GET);
        request.AddHeader("Cookie", "insert-cookie-content"); 
        IRestResponse response = client.Execute(request);
        Console.WriteLine(response.Content);
我已尝试将其转换为HttpClient,因为稍后需要使用AllowDirect属性:

        var client = new HttpClient();
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Add("Cookie", "insert-cookie-content");
        var response = await client.GetAsync(productUrl);
        Console.WriteLine(response);
我试图从中获取响应的URL是:

我的第一个问题是HttpClient请求给了我403个错误,而RestClient请求工作正常。我怎样才能解决这个问题

我的第二个问题是cookie在几次使用后过期,我必须手动从postman那里获取一个新的cookie并插入它。请求是否仍然可以生成自己的cookie


下面是比较的两个fiddler响应:

对于HttpClient,如果您想通过
DefaultRequestHeaders
手动传递Cookies,那么您必须告诉HttpClient不要使用CookieContainer。您必须使用HttpClientHandler的标志来指示它

var client = new HttpClient(new HttpClientHandler { UseCookies = false });
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Add("Cookie", "insert-cookie-content");
var response = await client.GetAsync(productUrl);
Console.WriteLine(response);

你比较过这两个发出的请求吗?就像用Fiddler(或类似的工具)捕获它们并将它们并排比较一样。@PeterCsala我有,对我来说没有多大意义,但我可以看到RestSharp请求有一些安全头,而HttpClient没有。请将比较结果包括在问题中好吗?那么,基于HttpClient的解决方案缺少哪些内容。我指的是请求头,而不是响应:DA web服务器不关心使用哪个库来调用它。web服务器看到的都是请求。因此,如果您比较请求,找出它们的不同之处,并使它们相同,那么服务器将对它们进行相同的处理。这就是为什么建议使用小提琴手。