此刻,我正在使用以下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,因为稍后需要使用AllowRedirect属性:
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
答案 0 :(得分:1)
在使用HttpClient的情况下,如果您想手动通过DefaultRequestHeaders
传递Cookies,则必须告诉HttpClient不要使用CookieContainer。您必须使用HttpClientHandler
的{{3}}标志进行指示。
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);