POST JSON с Flurl

Я начинаю с Flurl и хочу создать POST, но думаю, что у меня проблема с форматом моих параметров JSON.

Вы можете увидеть параметры JSON:

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

Эти настройки работают с Почтальоном, и теперь я хотел бы использовать 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"
            });
        }
    }
}

Спасибо за помощь!

1 ответ

Решение

Я думаю, что 2 проблемы были определены здесь.

  1. Вы используете PostUrlEncodedAsync, который собирается отправлять данные в URL-кодированном формате, например так: name=device:domain\\login&pwd=123456, Если вы хотите, чтобы данные сериализовались в JSON, используйте PostJsonAsync вместо.

  2. Вы включаете только вложенные attributes объект JSON, а не весь объект.

Короче говоря, вы захотите что-то вроде этого:

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

Как только вы доберетесь до этого места, вам нужно будет знать, как обрабатывать результаты. Если ответ отформатирован в формате JSON, вы, вероятно, захотите добавить .ReceiveJson() или же .ReceiveJson<T>() на вышеуказанный вызов, чтобы иметь более дружественный объект для работы. Пожалуйста, обратитесь к документации.

Другие вопросы по тегам