POST JSON с Flurl - PullRequest
       36

POST JSON с Flurl

0 голосов
/ 14 декабря 2018

Я начинаю с 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 Ответ

0 голосов
/ 14 декабря 2018

Я думаю, что здесь были обнаружены 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>() к вышеуказанному вызову, чтобы иметь более дружественный объект для работы.Пожалуйста, обратитесь к документации .

...