【问题标题】:Problems with PostAsJsonAsync methodPostAsJsonAsync 方法的问题
【发布时间】:2019-07-23 06:57:50
【问题描述】:

我在为一个问题挠头,PostAsJsonAsync 方法返回 500 内部服务器错误,但该方法尝试发送的 JSON 是正确的,因为当我使用 Postman 时,我发送相同的 JSON 并且服务器接收到它,我阅读了我发现的有关该主题的所有问题,但我找不到问题出在哪里,我以本地主机身份运行,这里是代码 sn-p:

client.BaseAddress = new Uri(endPoint);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.TryAddWithoutValidation("ZUMO-API-VERSION",2.0.0");
client.DefaultRequestHeaders.TryAddWithoutValidation("RM-EXT-KEY", key);

var content  = new StringContent(JsonConvert.SerializeObject(NotifiedUser), 
                   Encoding.UTF8, "application/json");
var response = await client.PostAsJsonAsync(endPoint, content);

我已经检查过了,TryAddWithoutValidation 对两个实例都返回 true,因此 PostAsJsonAsync 方法的每个参数都是正确的。

谢谢!

【问题讨论】:

  • 您不需要将类转换为 json 字符串。您可以直接将类对象传递给 PostAsJsonAsync 方法。 msdn.microsoft.com/en-us/library/…
  • 我知道,以前就是这样,这并不能解决任何问题,所以我认为该方法正在以一种奇怪的方式进行序列化,并在进入该方法之前进行了序列化以检查它,但问题仍然存在

标签: c# asp.net


【解决方案1】:

您是否尝试过只使用client.SendAsync 而不是client.PostAsJsonAsync(endPoint, content)? 我在与外部 java 服务交谈时遇到了类似的问题,PostAsJson 返回了 400,但是当更改为:

var request2 = new HttpRequestMessage(HttpMethod.Post, uri)
{
    Content = new StringContent(JsonConvert.SerializeObject(apdRequest), Encoding.UTF8,
        "application/json")
};

var response = client.SendAsync(request2).Result;

它开始工作了……

这似乎是PostAsJsonAsync 没有正确执行序列化 - 但没有给出任何问题的迹象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多