HttpResponseMessage.Content.ToString();以System.Net.Http.SteamContent的形式返回

时间:2015-04-10 04:18:14

标签: 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;

        }


    }

我通过

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

return result.Content.ToString();

然而,当我把它写到控制台时,它看起来像:

System.Net.Http.SteamContent

有关问题的任何线索?我对流内容类型不太熟悉。

3 个答案:

答案 0 :(得分:5)

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

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

或者你可以使用 string resultString = result.Content.ReadAsStringAsync().Result; 直接将结果读成字符串。这种方法不需要使用StreamReader所以我建议这样做。

答案 1 :(得分:0)

在HttpResponseMessage上调用GetResponse()

Stream stream = result.GetResponseStream();
StreamReader readStream = new StreamReader(stream, Encoding.UTF8);
return readStream.ReadToEnd();

答案 2 :(得分:0)

如果您只对内容感兴趣,可以通过更改

直接获取字符串
HttpResponseMessage response = client.GetAsync(endpoint).Result;

string response = client.GetStringAsync(endpoint).Result;

https://msdn.microsoft.com/en-us/library/hh551746(v=vs.118).aspx