我的目标是通过在头中沿着一个Json主体和一个安全令牌,使用RestSharp GET下载一个文件。
我从Postman那里得到了这段代码,GET在那里工作(我被提示在哪里保存文件)。
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", token);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", json, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
string responseMsg = "";
if (response.Content == "")
responseMsg = response.ErrorMessage
else
responseMsg = response.Content
return responseMsg;
我得到的唯一响应是ErrorException“HTTP动词GET不支持正文"。
所以我相信我的逻辑有问题,而不是我的Json或令牌。我的代码中有什么看起来不正确的吗?
应用框架:.Net 4.8版
RestSharp版本:106.15.0
- 谢谢-谢谢
编辑:
如下所述,带有body参数的GET请求是无效的。删除json主体后,请求现在可以工作了。
var client = new RestClient(url);
client.Timeout = -1;
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", token);
IRestResponse response = client.Execute(request);
在我的应用程序中,唯一标识符被附加到端点,因此只需要安全令牌作为头。
1条答案
按热度按时间qlfbtfca1#
GET requests cannot have bodies,或者说,他们可以,但这种行为没有定义,所以一些实现将完全拒绝请求。appears,RestSharp也故意不支持GET请求与身体出于同样的原因。根据该线程,.NET本身可能支持他们,所以如果绝对必要,你可能希望尝试。
无论你是否 * 应该 * 这样做可能会在个人意见的保护伞下,但是记住这一点,我会警告不要做规范之外的事情,因为任何库或框架的更新都不能保证行为的一致性,当他们被使用在规范之外。如果这是一个API,你可以控制,你应该考虑使它在规范之内。如果不是,您应该考虑联系开发人员让他们研究一下。