RestSharp返回空值求助:Postman请求正常但代码无数据返回
问题分析与解决方法
核心问题
你这段代码的关键错误是给GET请求添加了请求体(RequestBody)。虽然Postman等工具允许GET请求带请求体,但HTTP规范中GET请求并不推荐携带请求体,很多服务器会直接忽略GET请求的请求体内容,导致参数无法被正确接收,最终返回空值。
修正方案
把原请求体中的参数改为查询参数(Query Parameters),这是GET请求传递参数的标准方式,修正后的代码如下:
ServicePointManager.Expect100Continue = true; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; var client = new RestClient("url"); client.Timeout = -1; var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Basic mytoken"); // 将分页、日期参数转为查询参数 request.AddQueryParameter("size", "1"); request.AddQueryParameter("page", "1"); request.AddQueryParameter("start_date", "2022-01-02"); request.AddQueryParameter("end_date", "2022-01-03"); IRestResponse response = client.Execute(request); MessageBox.Show(response.Content);
额外说明
- 移除了
Content-Type: application/json请求头——GET请求没有请求体,这个头完全多余,反而可能让服务器产生误解。 - Postman能成功的原因:Postman对GET请求带请求体的场景做了兼容处理,可能自动将请求体内容转换为查询参数,或者你的服务器对Postman的请求做了特殊兼容,但RestSharp的处理更符合HTTP规范,所以必须按标准方式传递参数。
内容的提问来源于stack exchange,提问作者boylang78
相关产品推荐
相关产品推荐

