Передайте объект json через .net core api - PullRequest
0 голосов
/ 05 июня 2018

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

Я пробовал это:

using(var client = new HttpClient())
    {
        var response = await client.GetAsync(new Uri($"RestEndpoint"));

        return Ok(response.Content.ReadAsStringAsync());

    }

и это:

using(var client = new HttpClient())
    {
        var response = await client.GetAsync(new Uri($"RestEndpoint"));
        var stream = await response.Content.ReadAsStreamAsync();
        byte[] buffer = new byte[32768];
        using (MemoryStream memoryStream = new MemoryStream())
        {
            while (true)
            {
                int read = stream.Read(buffer, 0, buffer.Length);
                if (read <= 0)
                {
                    return Ok( memoryStream.ToArray());
                }
                memoryStream.Write(buffer, 0, read);
            }
        }
    }

Но ни один из них не предоставляет объект JSON, поскольку его получает HttpClient.Я говорю это потому, что когда я нажимаю на конечную точку с помощью Почтальона, она имеет правильный формат.

Справочная информация: У меня есть приложение функции триггера http, предоставляющее объект json, оно эффективно действует как конечная точка API,Я использую это функциональное приложение, потому что модель уже присутствует в моем проекте функционального приложения.Однако для нашего проекта есть отдельный API, в котором есть все аутентификации / авторизации.Поэтому мне нужно вызвать конечную точку приложения существующей функции из API и передать объект Json напрямую, без десериализации и синтаксического анализа объекта.Я не хочу иметь копию модели в проекте API.

1 Ответ

0 голосов
/ 05 июня 2018

Замените ваш Ok вызов на

var content = await response.Content.ReadAsStringAsync();
return Content(content, "application/json");

Content метод возвращает данную строку как есть.

...