HttpResponseMessage.Content.ToString();返回 System.Net.Http.SteamContent
HttpResponseMessage.Content.ToString(); Comes back as System.Net.Http.SteamContent
我正在尝试使用 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
关于问题是什么的任何线索?我对流内容类型不太熟悉。
HttpContent 没有实现 ToString 方法。所以你需要使用result.Content.CopyToAsync(Stream)
将结果内容复制到一个Stream。
然后您可以使用 StreamReader 读取该 Stream。
或者你可以使用
string resultString = result.Content.ReadAsStringAsync().Result;
读取结果作为字符串 directly.This 方法不需要使用 StreamReader 所以我建议这样。
在 HttpResponseMessage
上调用 GetResponse()
Stream stream = result.GetResponseStream();
StreamReader readStream = new StreamReader(stream, Encoding.UTF8);
return readStream.ReadToEnd();
如果只对内容感兴趣,可以直接改成字符串
HttpResponseMessage response = client.GetAsync(endpoint).Result;
至
string response = client.GetStringAsync(endpoint).Result;
https://msdn.microsoft.com/en-us/library/hh551746(v=vs.118).aspx
我正在尝试使用 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
关于问题是什么的任何线索?我对流内容类型不太熟悉。
HttpContent 没有实现 ToString 方法。所以你需要使用result.Content.CopyToAsync(Stream)
将结果内容复制到一个Stream。
然后您可以使用 StreamReader 读取该 Stream。
或者你可以使用
string resultString = result.Content.ReadAsStringAsync().Result;
读取结果作为字符串 directly.This 方法不需要使用 StreamReader 所以我建议这样。
在 HttpResponseMessage
上调用 GetResponse()Stream stream = result.GetResponseStream();
StreamReader readStream = new StreamReader(stream, Encoding.UTF8);
return readStream.ReadToEnd();
如果只对内容感兴趣,可以直接改成字符串
HttpResponseMessage response = client.GetAsync(endpoint).Result;
至
string response = client.GetStringAsync(endpoint).Result;
https://msdn.microsoft.com/en-us/library/hh551746(v=vs.118).aspx