Вызовите Web Api 2 и HttpClient с динамическим объектом - PullRequest
0 голосов
/ 09 октября 2018

В настоящее время я работаю над приложением .NET Framework 4.7.2.Мне нужно вызвать контроллер Web API из моего кода C #.

Я обновляю динамический объект, я не могу создать какую-либо модель представления. Динамический объект имеет следующую структуру и будет динамически заполняться различными ключами:

List<KeyValuePair<int,Dictionary<string, object>>>

Код вызова выглядит так:

var task = Task.Run(async () => await UpdateMyInformation(myDynamicObject));
var test = task.Result;

Реализация метода:

private async Task<dynamic> UpdateMyInformation(dynamic data)
{
    var content = new StringContent(JsonConvert.SerializeObject(data).ToString(), 
        Encoding.UTF8, "application/json");
    var baseUrl = "http://localhost:1234/api/MyInformationController";

    using (HttpClient client = new HttpClient())
    {
        var response = await client.PutAsync(baseUrl, content);
        response.EnsureSuccessStatusCode();
        var result = response.Content.ReadAsStringAsync().Result;
        return result;
    }

}

Контроллер API выглядит так:

public class MyInformationController : ApiController
{
    [HttpPut]
    public async Task<dynamic> Put(dynamic myData)
    {
       // I need to parse data and return the new dynamic object
       // Manipulate myData according to a given logic

        return myData;
    }
}

Я могу получить данные в своем действии контроллера, мой вопрос: должен ли я использовать динамический метод для добавления объекта JSON в мой контроллер?

Что может быть лучшим подходом для решения этой проблемы?

1 Ответ

0 голосов
/ 09 октября 2018

Я бы использовал JObject вместо динамического.

public class MyInformationController : ApiController
{
    [HttpPut]
    public async Task<dynamic> Put(JObject myData)
    {
       // I need to parse data and return the new dynamic object
       // Manipulate myData according to a given logic

        return myData;
    }
}

Используя JObject, вы можете получить доступ к свойствам объекта на основе ключей.Пожалуйста, смотрите документы для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...