目前我正在使用下面的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.comsglaunchtair-max-90-orange-duck-camo
我的第一个问题是,HttpClient请求给我403错误,而RestClient请求却能正常工作。我如何解决这个问题?
我的第二个问题是,cookie在使用几次后就过期了,我必须手动从postman中获取一个新的cookie并插入。有没有办法让请求自己生成cookie?
下面是两个fiddler的响应对比。https:/imgur.comabZo7d9F
在HttpClient的情况下,如果你想通过手动传递Cookie DefaultRequestHeaders
然后你必须告诉HttpClient不要使用CookieContainer。你必须使用 HttpClientHandler
's 使用Cookie 标志来表示。
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);