【问题标题】:HTTP Post Error 400 using RestSharp and HTTPClient - How to Diagnose? [closed]使用 RestSharp 和 HTTPClient 的 HTTP Post 错误 400 - 如何诊断? [关闭]
【发布时间】:2020-10-27 22:31:31
【问题描述】:

我正在将一个 java 应用程序移植到 C#。有一个带有一些键值对的 HTTP 发布请求。无需身份验证。我还获得了一个工作 python 示例,它以类似的方式发布。端点很好。

我已经尝试过 HTTPClient 和 RestSharp,结果相似。

我想知道我是否做错了,我正在做这样的事情:

var values = new Dictionary<string, string>
                {
                    { "A", a },
                    { "B", b },
                    { "C", c },
                    { "D", d }
                }
var content = new FormUrlEncodedContent(values);
Uri u = new Uri(myURI);
var response = await client.PostAsync(u,content);
var responseString = await response.Content.ReadAsStringAsync();

python 看起来很像这样:

>>> payload = {'key1': 'value1', 'key2': 'value2'}

>>> r = requests.post("https://httpbin.org/post", data=payload)
>>> print(r.text)

java 和 python 的例子,看起来很相似,建立一个参数列表并发布。其余的锐利看起来相似,但也因相同的错误而失败。我正在寻找一些我不知道的东西来尝试。是标题还是内容类型发生了变化?提交数据的不同方式?我迷路了。

【问题讨论】:

  • 在这个时代使用 RestSharp 没有真正的理由,使用 IHttpClientFactory。此外,如果您尝试调试 be 调用之间的差异,请使用 Fiddler
  • 您确定端点接受application/x-www-form-urlencoded 内容吗?这就是 Java/python 示例发布数据的方式吗?
  • @devNull 我不确定。我被认为要改变这一点,但不确定我做得是否正确。 Python 代码使用requests 库,代码中没有标题/内容更改;看似默认的发布请求。
  • @TheGeneral 我会试试提琴手。谢谢
  • Fiddler 很好地格式化了错误。这是一个无效的参数输入。已修复并且可以正常工作。顺便说一句,python 请求在 postasync 上以相同的方式发布。

标签: c# post .net-core httpclient restsharp


【解决方案1】:

根据问题中的 cmets,建议 Fiddler 诊断问题。

Fiddler 很好地格式化了显示无效参数的响应文本。参数更正,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多