POST JSON 与 Flurl

POST JSON with Flurl

我从 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"
            });
        }
    }
}

感谢您的帮助!

我认为这里发现了 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.