如何使用 Windows.Web.HttpClient 反序列化数据?
How to get data deserialized using Windows.Web.HttpClient?
我需要从 Json 中获取反序列化的对象列表。
我的问题是这段代码挂在行 responseMessage = await httpClient.GetAsync(uri);
我已经检查了 Fiddler 中的获取和响应,我在 Fiddler 中得到 Json,一切都有代码 200 OK,但由于某种原因代码无论是否在 VS 中调试,都不要前进到下一行,它只会永远挂起。我在此代码中缺少什么来获取对象列表?
由于代码在提到的行中挂起,问题一定出在 HttpClient 中。
using (HttpClient httpClient = new HttpClient())
{
try
{
var headers = httpClient.DefaultRequestHeaders;
HttpResponseMessage responseMessage;
responseMessage = await httpClient.GetAsync(uri);
responseMessage.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/x-www-form-urlencoded; charset=UTF-8");
var content = responseMessage.Content.ReadAsStringAsync();
tvChannelList = JsonConvert.DeserializeObject<List<TvChannels>>(content.GetResults());
return tvChannelList;
}
catch (Exception ex)
{
throw;
}
}
提前感谢您的任何提示。
我在使用 HttpClient 时使用此方法,并希望从 JSON 响应中 return 一个对象。
public async Task<TResult> MakeGetRequest<TResult>(string uri)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
HttpResponseMessage response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var data = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TResult>(data);
}
}
问题太蠢了,我忘记在调用web服务数据的方法名前加上await
,所以阻塞了UI。
之前
ListOfTvChannels = _remoteController.GetChannelListAsync();
之后
ListOfTvChannels = await _remoteController.GetChannelListAsync();
感谢大家的帮助。
我需要从 Json 中获取反序列化的对象列表。
我的问题是这段代码挂在行 responseMessage = await httpClient.GetAsync(uri);
我已经检查了 Fiddler 中的获取和响应,我在 Fiddler 中得到 Json,一切都有代码 200 OK,但由于某种原因代码无论是否在 VS 中调试,都不要前进到下一行,它只会永远挂起。我在此代码中缺少什么来获取对象列表?
由于代码在提到的行中挂起,问题一定出在 HttpClient 中。
using (HttpClient httpClient = new HttpClient())
{
try
{
var headers = httpClient.DefaultRequestHeaders;
HttpResponseMessage responseMessage;
responseMessage = await httpClient.GetAsync(uri);
responseMessage.Content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/x-www-form-urlencoded; charset=UTF-8");
var content = responseMessage.Content.ReadAsStringAsync();
tvChannelList = JsonConvert.DeserializeObject<List<TvChannels>>(content.GetResults());
return tvChannelList;
}
catch (Exception ex)
{
throw;
}
}
提前感谢您的任何提示。
我在使用 HttpClient 时使用此方法,并希望从 JSON 响应中 return 一个对象。
public async Task<TResult> MakeGetRequest<TResult>(string uri)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Encoding", "gzip, deflate");
client.DefaultRequestHeaders.TryAddWithoutValidation("Accept-Charset", "ISO-8859-1");
HttpResponseMessage response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var data = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TResult>(data);
}
}
问题太蠢了,我忘记在调用web服务数据的方法名前加上await
,所以阻塞了UI。
之前
ListOfTvChannels = _remoteController.GetChannelListAsync();
之后
ListOfTvChannels = await _remoteController.GetChannelListAsync();
感谢大家的帮助。