HttpResponseMessage.Content.ToString(); 作为System.Net.Http.SteamContent回来

Wil*_*nne 1 c# api rest

我正在尝试使用C#中的API,这是请求的代码。它应该是一个简单的JSON API,但是我在这里遇到了一些违规情况。

public static HttpResponseMessage sendRequest(List<Header> headers, string endpoint, string api_key, string api_secret)
    {

        using (var client = new HttpClient())
        {
            List<Header> headerlist = new List<Header>{};

            if(headers != null)
                headerlist = headers;

            List<Header> signed = Helpers.sign(endpoint, api_secret);
            foreach (Header header in signed)
            {
                headerlist.Add(header);
            }

            client.BaseAddress = new Uri("https://api.coinkite.com");
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Add("X-CK-Key", api_key);

            foreach (Header header in headerlist)
            {
                client.DefaultRequestHeaders.Add(header.Name, header.Data);
            }

            HttpResponseMessage response = client.GetAsync(endpoint).Result;

            return response;

        }


    }
Run Code Online (Sandbox Code Playgroud)

我打电话给的

HttpResponseMessage result = Requests.sendRequest(null, "/v1/my/self", api_key, api_secret);

return result.Content.ToString();
Run Code Online (Sandbox Code Playgroud)

但是,当我将其编写为控制台时,它看起来像:

System.Net.Http.SteamContent

关于这个问题有什么线索吗?我对流内容类型不太熟悉。

小智 5

HttpContent不实现ToString方法。因此,您需要使用result.Content.CopyToAsync(Stream)将结果内容复制到Stream。

然后,您可以使用StreamReader读取该Stream。

或者您可以使用 string resultString = result.Content.ReadAsStringAsync().Result; 直接以字符串形式读取结果。此方法无需使用StreamReader,因此我建议采用这种方式。