繁体   English   中英

C# RestSharp 没有响应 Get With Json Body

[英]C# RestSharp No Response From Get With Json Body

我的目标是通过传递 Json 正文和 header 中的安全令牌来使用 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 verb GET does not support body ”。

所以我认为我的逻辑有问题,而不是我的 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);

在我的应用程序中,唯一标识符附加到端点,因此只需要安全令牌作为 header。

GET 请求不能有 body ,或者更确切地说,它们可以,但是这种行为没有定义,所以一些实现会完全拒绝请求。 出于同样的原因,RestSharp似乎也有意不支持带有正文的 GET 请求。 根据该线程,.NET 本身可能支持它们,因此如果绝对必要,您可能希望尝试一下。

你是否应该这样做可能会受到个人意见的保护,但是考虑到这一点,我会警告不要做规范之外的事情,因为对库或框架的任何更新都不能保证行为的一致性,当它们是超出规格使用。 如果这是您可以控制的 API,您应该考虑将其纳入规范。 如果不是,您应该考虑联系开发商,让他们调查一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM