【问题标题】:POST JSON with Flurl使用 Flurl 发布 JSON
【发布时间】:2018-12-14 10:53:04
【问题描述】:

我从 Flurl 开始,我想创建一个 POST,但我认为我的 JSON 参数格式有问题。

可以看到JSON参数:

{
    "aaaUser" : {
    "attributes" : {
        "name" : "device:domain\\login",
        "pwd" : "123456"
        }
    }
}

这些设置适用于 Postman,现在我想使用 Flurl 继续我的小 POST :) 但我的 JSON 格式不正确。

using System.Threading.Tasks;
using Flurl.Http;

namespace Script
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var result = await "https://IP/api/aaaLogin.json".PostUrlEncodedAsync(new
            {
                name = "device:domain\\login",
                pwd = "123456"
            });
        }
    }
}

感谢您的帮助!

【问题讨论】:

  • 您的实际代码未发布 JSON。这不是 UrlEncodedAsync 的用途。 UrlEncodedAsync 用于从 HTML 表单中进行 POST。阅读the documentation。它清楚地显示了如何 PostJsonAsync。
  • @mason 是的,现在我可以使用 PostJsonAsync。然而,JSON 格式的问题始终存在。因为我需要进行第一次连接。
  • 第一次连接是什么意思?你得到的确切错误是什么?请花一些时间考虑其他人会如何看待您的问题。请记住,我们不在您的计算机旁。我们看不到你在做什么。由您以我们可以理解的方式正确地向我们传达信息。
  • @mason 好的,我很抱歉。目前我使用 Postman 进行不同的操作(POST -> 用于我设备上的第一个连接,之后我可以执行不同的 GET 操作)。如果您看到我的第一条消息,我介绍了 Postman 中使用的 JSON,他可以正常工作。所以现在我想用 Flurl 来做同样的动作。但是我认为问题出在我的脚本中的 JSON 参数,因为当我运行这个时,我收到: {"totalCount":"1","imdata":[{"error":{"attributes":{"code": "400","text":"无法解析登录请求"}}}]}。如果您需要更多信息,请不要犹豫!
  • 您在这里使用什么 API?有文档吗?

标签: c# json post json.net flurl


【解决方案1】:

我认为这里发现了 2 个问题。

  1. 您正在使用PostUrlEncodedAsync,它将以 URL 编码格式发送数据,如下所示:name=device:domain\\login&pwd=123456。如果您希望将数据序列化为 JSON,请改用 PostJsonAsync

  2. 您只包括 JSON 的嵌套 attributes 对象,而不是整个对象。

简而言之,你会想要这样的东西:

var result = await "https://IP/api/aaaLogin.json".PostJsonAsync(new
{
    aaaUser = new
    {
        attributes = new
        {
            name = "device:domain\\login",
            pwd = "123456"
        }
    }
});

一旦您走到这一步,您将需要知道如何处理结果。如果响应是 JSON 格式的,您可能需要将 .ReceiveJson().ReceiveJson<T>() 附加到上述调用中,以便使用更友好的对象。请参考documentation

【讨论】:

  • 非常感谢您的回答。真的很清楚,我的问题解决了。我会加深 Flurl :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 2011-03-31
相关资源
最近更新 更多