C# 用Flurl发布JSON

C# 用Flurl发布JSON,c#,json,post,json.net,flurl,C#,Json,Post,Json.net,Flurl,我从Flurl开始,我想创建一篇文章,但我认为我的JSON参数的格式有问题 您可以看到JSON参数: { "aaaUser" : { "attributes" : { "name" : "device:domain\\login", "pwd" : "123456" } } } 这些设置适用于Postman,现在我想使用Flurl继续我的小帖子:),但我的JSON格式不正确 using System.Threading.T

我从Flurl开始,我想创建一篇文章,但我认为我的JSON参数的格式有问题

您可以看到JSON参数:

{
    "aaaUser" : {
    "attributes" : {
        "name" : "device:domain\\login",
        "pwd" : "123456"
        }
    }
}
这些设置适用于Postman,现在我想使用Flurl继续我的小帖子:),但我的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"
            });
        }
    }
}

谢谢你的帮助

我认为这里已经发现了两个问题

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

  • 您只包括JSON的嵌套
    属性
    对象,而不是整个对象

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

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

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

    您的实际代码没有发布JSON。这不是UrlEncodedAsync的用途。UrlEncodedAsync用于类似HTML表单的发布。阅读它清楚地显示了如何PostJsonAsync。@梅森:是的,现在我可以使用PostJsonAsync了。然而,JSON格式的问题总是存在的。因为我需要做第一次连接。你说你需要做第一次连接是什么意思?您得到的确切错误是什么?请花点时间想想其他人会如何看待你的问题。记住,我们不是在你的电脑前。我们看不到你在做什么。由您以我们能够理解的方式向我们适当地传达信息。@mason好的,对此我很抱歉。目前我使用Postman进行不同的操作(POST->用于设备上的第一个连接,之后我可以执行不同的GET操作)。如果你看到我的第一条消息,我介绍了Postman中使用的JSON,他工作正常。现在我想用Flurl做同样的动作。然而,我认为问题在于脚本中的JSON参数,因为当我运行这个参数时,我收到:{“totalCount”:“1”,“imdata”:[{“error”:{“attributes”:{“code”:“400”,“text”:“未能解析登录请求”}}}]}。如果您需要更多信息,请不要犹豫!你在这里使用什么API?它有文档吗?非常感谢您的回答。这真的很清楚,我的问题解决了。我会加深慌乱:)