Получение строки тела из API вместо заголовка - PullRequest
0 голосов
/ 16 января 2020

Я пытался написать метод, который должен был вернуть мне ответ API. Но когда я вызываю его возвращаемое значение в Console.WriteLine, я получаю его заголовок. Кроме того, я думаю получить вывод, который может включать символы юникода в UTF-8.

Если есть лучший способ получить его в кодировке, я рад это слышать.

private static async Task<HttpResponseMessage> Test(string apiUrl, string apiKey)
{
    using (var httpClient = new HttpClient())
    {
        using (var request = new HttpRequestMessage(new HttpMethod("GET"), apiUrl))
        {
            request.Headers.TryAddWithoutValidation("accept",        "application/json");
            request.Headers.TryAddWithoutValidation("Authorization", apiKey);

            var response = await httpClient.SendAsync(request);

            /*
            string message      = await response.Content.ReadAsStringAsync();
                    string parsedString = Regex.Unescape(message);
                    byte[] isoBites     = Encoding.GetEncoding("UTF-8").GetBytes(parsedString);
                    return Encoding.UTF8.GetString(isoBites, 0, isoBites.Length);
            */

            return response;
        }
    }
}

Я получаю следующее:

 allow: GET,POST 
 cache-control: no-cache 
 connection: keep-alive 
 content-length: 146870 
 content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:; 
 content-type: application/json; charset=utf-8 
 date: Thu, 16 Jan 2020 12:52:47 GMT 
 expires: -1 

Я ожидаю, что его тело выдает некоторую строку JSON,

[{"MemberNo": 62,"MemberName": "comp1","PrefixNo": 545102,
"IsBusinessCard": false,"Brand": null,"LogoUrl": null},{"MemberNo":   62,"MemberName": 
"comp2","PrefixNo": 554796,"IsBusinessCard": false,"Brand":
null,"LogoUrl": null}]

Ответы [ 2 ]

0 голосов
/ 16 января 2020

enter image description here

Следующее дает то, что я sh.

var http = Test(url, key); // calling function
var json_string = http.Result.Content.ReadAsStringAsync().Result;
Console.WriteLine(json_string);
0 голосов
/ 16 января 2020

Вам нужно прочитать тело из содержимого респона.

    if (response.Content != null)
    {
        var responseBody = await response.Content.ReadAsStringAsync();
        //Trace.WriteLine(responseBody);;                            
    }
...