我正在尝试使用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,因此我建议采用这种方式。