【问题标题】:how can I get a correct response from a rest API?如何从其他 API 获得正确响应?
【发布时间】:2019-01-08 12:32:51
【问题描述】:

我想向休息 API 发送请求并获得响应并将其显示在表单上。 API文档说我应该在不记名中使用我的令牌来授权标头中的授权。 我用过 RestSharp 掘金,这是我的书面代码:

        var client = new RestClient("https://api.payping.ir");
        var request = new RestRequest("v1/product/List");

        request.AddHeader("Authorization", "Bearer <myToken>");
        request.AddParameter("offset", 0);
        request.AddParameter("limit", 10);

        var response = client.Execute(request, Method.GET);

        richTextBox2.Text = "Status:\n" + response.StatusCode + "\nContent:\n" + response.Content + "\nResponse:\n" + response.IsSuccessful;

但我收到了错误的回复。通过此代码在我的表单上返回的最终字符串是:

状态: 0

内容:

回应: 假的

我的错误是什么?以及如何从其他 API 获得正确响应? 感谢您的关注

【问题讨论】:

  • 不确定是否有区别,但请尝试使用 RestClient("https://api.payping.ir/");(最后一个斜杠)
  • 我试过了,结果一样。
  • @Steve 供将来参考,RestSharp 不关心尾部斜杠。这是他们那里的一个很好的包裹;)
  • 在不知道服务器在做什么的情况下,我们绝对无法帮助您。据我们所知,无论您发送什么,它都可能只是返回您发布的值。
  • API 文档在 FARSI 中:docs.payping.ir 问题是我没有得到“任何”响应

标签: c# json rest restsharp rest-client


【解决方案1】:

试试:

request.AddParameter("Authorization", $"Bearer {myToken}", ParameterType.HttpHeader);

然后使用 Fiddler 检查您发送的数据包以验证标头是否已发送。

下一步是服务器端;)

【讨论】:

  • 这应该是一个评论,充其量。
  • "addheader" 方法与 "addparameter" 方法相同,具有 hyypheader 参数类型。但我尝试了这段代码并安装了提琴手并检查了数据包。在标题选项卡中显示此文本:“CONNECT api.payping.ir:443 HTTP/1.1”,在 Auth 选项卡中显示:“不存在代理授权标头。不存在授权标头。”
  • 我认为 fiddler 在检查标头时可能会遇到问题,因为请求使用的是 https
  • 我完全同意 AddHeader 方法,它是 AddParameter 方法的重载。我只是不确定您是否使用字符串插值正确插入了令牌值。
猜你喜欢
  • 1970-01-01
  • 2020-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-14
  • 1970-01-01
  • 2019-01-19
  • 2012-07-01
相关资源
最近更新 更多