关于c#:是否可以使用HttpClient / RestSharp自动生成标头?

Is it possible to generate headers automatically with HttpClient / RestSharp?

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

1
2
3
4
5
        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,因为稍后需要使用AllowRedirect属性:

1
2
3
4
5
        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是:https://www.nike.com/sg/launch/t/air-max-90-orange-duck-camo

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

我的第二个问题是,cookie会在使用几次后失效,因此我必须从邮递员那里手动获取一个新的cookie并将其插入。 无论如何,请求是否生成自己的cookie?

这是比较的两个提琴手响应:https://imgur.com/a/bZo7d9F


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

1
2
3
4
5
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);