【问题标题】:Using RestSharp to submit a POST request, values are added to header使用 RestSharp 提交 POST 请求,将值添加到 header
【发布时间】:2018-04-15 22:31:06
【问题描述】:

我正在尝试使用 C# 中的 RestSharp 向 API 提交一些数据,似乎我的所有参数都已添加到 Headers 集合中 - 或者这就是它们在 VS 中的分类方式。

这是我的代码

var client = new RestClient("https://api.com");
var request = new RestRequest("/recognize", Method.POST);

request.AddHeader("app_id", "");
request.AddHeader("app_key", "");
request.AddHeader("Content-Type", "multipart/form-data");

request.AddParameter("gallery_name", model.gallery_name);
request.AddParameter("image", model.image);

var response = client.Execute(request);

API 返回的错误表明请求缺少 gallery_name 和 image 参数,但查看请求对象时它们在 Headers 集合中。

我可以在 Postman 中进行调用,其中方法设置为 Post,Body 设置为 form-data,并列出 2 个键/值对。

我做错了什么?

【问题讨论】:

  • 你有没有试过用 AddHeader 而不是 AddParameter 这两个?
  • 为什么会这样? AddHeader 加到表头,AddParameter 也加到表头
  • 不确定,只是想知道您是否尝试过。应该没什么区别,但是这种情况多久能阻止奇怪的事情发生?
  • 还有什么格式的图片作为model.image?是 url,base64 吗?
  • 根据the RestSharp documentation,这种行为似乎是正确的 - 它表示,鉴于这是一个 POST,GetOrPost 类型参数将呈现在正文中,除非请求是多部分/表单数据.

标签: c# restsharp


【解决方案1】:

在您的问题中,您说“我可以用 Postman 拨打电话……”。

通常,如果 Postman 请求成功,那么从 Postman 生成的 RestSharp 代码应该可以工作,如果 RestSharp 库中没有可能导致您的问题的未解决问题。

很难从这里调试和重现问题,但我可以提供以下内容供您检查。

检查一下:

如果您的 Postman 请求有效并且成功,则检查 Postman 生成的 Restsharp 代码:

  1. 点击“代码”

  1. 在组合框中选择“C# (RestSharp)”

  1. 尝试您在窗口中看到的 RestSharp 代码,如果代码不起作用,请检查此URL 以了解已知问题。

附注:如果您发现可能导致错误的已知问题,请尝试使用先前版本的 RestSharp 或 alpha version 进行测试。

希望您现在可以进一步调查和调试问题。

(我也遇到过类似的问题,通过这种排查调试的方式成功解决)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2018-09-14
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多