【发布时间】:2020-06-16 22:28:12
【问题描述】:
目前我正在使用以下 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?
这是两个 fiddler 响应的比较:https://imgur.com/a/bZo7d9F
【问题讨论】:
-
你比较过这两个传出请求了吗?就像使用 Fiddler(或其他类似工具)捕获它们并并排比较它们。
-
@PeterCsala 我有,对我来说没有多大意义,但我可以看到 RestSharp 请求有一些安全标头,而 HttpClient 没有。
-
能否将您的比较结果包含在问题中?那么,基于 HttpClient 的解决方案中缺少哪些。
-
我指的是请求标头,而不是响应。 :D
-
Web 服务器不关心使用什么库来调用它。 Web 服务器看到的只是请求。因此,如果您比较请求,找出它们的不同之处,并使它们相同,那么服务器将相同地对待它们。这就是为什么建议使用 Fiddler。
标签: c# dotnet-httpclient restsharp