4

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

谢谢您的帮助 !

4

1 回答 1

6

我认为这里已经确定了两个问题。

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

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

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

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

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

于 2018-12-14T15:34:09.447 回答