0

我需要从 Json 获取反序列化的对象列表。

我的问题是这段代码挂在responseMessage = await httpClient.GetAsync(uri);我已经在 Fiddler 中检查了 get 和 response 的行中,我在 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;
                }
            }

提前感谢您的任何提示。

4

2 回答 2

1

问题太惨了,我忘了await在调用Web服务数据的方法名之前加上,从而阻塞了UI。

ListOfTvChannels = _remoteController.GetChannelListAsync();

ListOfTvChannels = await _remoteController.GetChannelListAsync();

感谢大家尝试提供帮助。

于 2015-11-19T12:15:55.363 回答
0

我在使用 HttpClient 并希望从 JSON 响应返回一个对象时使用此方法。

    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);
        }
    }
于 2015-11-18T21:04:04.003 回答