首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPClient在计量连接上失败,在wifi上运行良好。

问HTTPClient在计量连接上失败,在wifi上运行良好。
EN

Stack Overflow用户
提问于 2014-02-07 17:51:39
回答 2查看 203关注 0票数 0

我的应用程序在WiFi上运行良好,但当它通过3G连接时,它就崩溃了。

以下是代码:

代码语言:javascript
复制
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
    if (!App.ViewModel.IsDataLoaded)
    {
        await App.ViewModel.LoadDataAsync();
        DataContext = App.ViewModel;
    }
}

LoadDataAsync代码

代码语言:javascript
复制
    public async Task<bool> LoadDataAsync()
    {
        Uri uri = new Uri("http://www.28cinema.az/eng/");
        HttpClient client = new HttpClient();
        HtmlDocument htmlDocument = new HtmlDocument();
        HtmlNode htmlNode = new HtmlNode(0, htmlDocument, 1);
        MovieGroup data = new MovieGroup();
        string HtmlResult;    
        HtmlResult = await client.GetStringAsync(uri);
        data.Title = "Today";
        htmlDocument.LoadHtml(HtmlResult);            
        htmlNode = htmlDocument.DocumentNode.SelectSingleNode("//div[@class='poster_wrapper']");

        for (var i = 0; i < (htmlNode.ChildNodes.Count); i++)
        {
            data.Items.Add(new MovieData
            {
                DetailsUrl = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/div[1]/div[1]/a[1]").GetAttributeValue("href", ""),
                Title = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/div[1]/div[1]/a[1]").InnerText,
                Poster = htmlNode.SelectSingleNode("div[" + (i + 1) + "]/img").GetAttributeValue("src", "No poster"),
                Cinema = "28 Cinema"
            });
        }
        Today = data;        
        IsDataLoaded = true;
        return true;
    }

异常消息:没有网络连接,任务被取消。

堆栈跟踪:

代码语言:javascript
复制
   at Cineman.ViewModels.MovieModel.<CreateTodayGroupAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Cineman.ViewModels.MovieModel.<LoadDataAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Cineman.MainPage.<OnNavigatedTo>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__0(Object state)

如有任何建议,将不胜感激。

UPD:进一步查看显示了断点期间局部变量中的一行:'htmlNode.InnerHtml‘抛出了'System.NullReferenceException’类型的异常。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-07 20:12:46

当我重新启动Visual时,它就解决了。奇怪!

票数 0
EN

Stack Overflow用户

发布于 2014-02-07 18:00:11

正如您所发现的,如果您试图在没有网络连接的情况下执行HTTP请求,它将引发异常。

我建议您处理异常,例如,使用try/catch。如何向用户显示异常详细信息取决于您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21634531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档