c# - 如何让 RestSharp 请求像浏览器请求一样?
问题描述
令人惊讶的是,我注意到有义务共享公共 API 的页面(https://danepubliczne.imgw.pl/api/data/hydro/)似乎阻止了 RestSharp 请求,但同时浏览器上的 URL 返回结果更多或者不太正确......没有一种模式可以阻止请求,我不知道这是否是故意的。尽管如此,Resharp 请求还是经常失败。请求以超时或 500 秒错误之一结束。同时,chrome浏览器的请求在大多数情况下都能正常工作。下面是用于从该服务获取响应的代码
RestClient client;
RestRequest request;
client = new RestClient("https://danepubliczne.imgw.pl/api/data/hydro/");
request = new RestRequest(Method.GET);
request.AddHeader("Accept", "*/*");
response = client.Execute(request);
那么您能否向我推荐如何使 Restsharp 请求看起来像来自最新版本的 chrome 浏览器的请求?
解决方案
您需要在请求中添加标头。似乎至少User-Agent
是必需的。尝试这样的事情:
var request = new RestRequest(...);
...
request.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36");
推荐阅读
- javascript - 为什么这个js函数返回未定义的对象?
- python - Python3 tkinter DLL 加载失败
- python - 通过示例了解 LSTM
- php - 让孙子们用 Laravel eloquent 建模
- reactjs - 如何在 React Native + TypeScript 中从孙子更改祖父组件的状态?
- python - 如何让不和谐的机器人获取昵称而不是用户名?
- julia - 为什么加号运算符在 Julia 中被矢量化,而不是除法运算符?
- git-merge - 从两个存储库之间的合并创建一个 Yocto 层
- java - Java:如何从保存在路径中的多个文件夹中提取最大名称到文件夹名称都是数字的变量中?
- matlab - 如何改进这两个功能以减少给出结果的时间?