我打电话给www.boardgamegeek.com API。
我正在使用以下代码:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://www.boardgamegeek.com/xmlapi/collection/dhasmain");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/xml"));
// List data response.
HttpResponseMessage response = client.GetAsync("?own=1").Result;
if (response.IsSuccessStatusCode)
{
var dataObjects = response.Content.ReadAsStringAsync().Result;
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
}
但它显示结果=尚未计算。
有人可以告诉我这是什么问题吗?
我也使用下面的代码,但它没有返回任何内容。
string dataObjects ="&#34 ;; HttpClient client = new HttpClient(); client.BaseAddress = new Uri(" http://www.boardgamegeek.com/xmlapi/collection/zefquaavius"); client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(" application / xml"));
client.GetStringAsync("?own=1").ContinueWith(task =>
{
dataObjects = task.Result;
});
答案 0 :(得分:0)
您正在异步调用get并且在访问结果时没有给调用足够的时间来完成调用。完成请求后,您可以使用ContinueWith
来响应呼叫:
client.GetStringAsync("?own=1").ContinueWith(task =>
{
string dataObjects = task.Result;
});
编辑:根据您的评论,我看到了您的UTF-8编码问题。下面的代码将处理编码问题,因此您可以从响应中获得一串XML。
byte[] dataObjects = null;
client.GetByteArrayAsync("?own=1").ContinueWith(task => { dataObjects = task.Result; }).Wait();
string xmlResponse = System.Text.Encoding.UTF8.GetString(dataObjects);