Приложение Windows Phone выдает исключение (автоматически) при работе в 3G, но хорошо с WIFI. Очень странно - PullRequest
0 голосов
/ 12 декабря 2011

Я сотни раз пытался найти ошибки для этого куска кода.Он работает только через WIFI, но когда я отключаю WIFI на телефоне и снова запускаю приложение, это приложение просто автоматически отключается, что означает, что оно выдает исключение.

Приложение простое, я использовал WebClint(), чтобы загрузить исходный код HTML и проанализировать его с помощью пакета Agility Pack для HTML, затем добавить их в список и создать список для создания каждого объекта новостей.

Он сказал, что некоторые из исключений ArgumentOutOfRange и Genericlist (int32 index) ???

Я понятия не имею, это было хорошо в Wi-Fi, но не в сети 3G.Кто-нибудь может помочь?

    public partial class MainPage : PhoneApplicationPage
{
    string srcHTML;
    HtmlNode UrlNode;
    ObservableCollection<News> newsList = new ObservableCollection<News>();
    List<HtmlNode> headlines;
    HtmlDocument hd;
    News n;
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        WebClient webClenet = new WebClient();
        webClenet.Encoding = new HtmlAgilityPack.Gb2312Encoding();
        webClenet.DownloadStringAsync(new Uri("http://www.6park.com/news/multi1.shtml", UriKind.RelativeOrAbsolute));
        webClenet.DownloadStringCompleted += new DownloadStringCompletedEventHandler(webClenet_DownloadStringCompleted);
    }


    private void webClenet_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
    {
        srcHTML = e.Result;
        GetHeadlinePage(srcHTML);
    }
    private void GetHeadlinePage(string srcHTML)
    {
        hd = new HtmlDocument();
        hd.LoadHtml(srcHTML);
        try
        {

            UrlNode = hd.DocumentNode.ChildNodes[1].ChildNodes[3].ChildNodes[8].ChildNodes["tr"].ChildNodes["td"].ChildNodes["ul"];
            headlines = UrlNode.Descendants("a").ToList();

            foreach (var headline in headlines)
            {

                if (headline.Attributes["href"].Value.Contains("6park"))
                {
                    n = new News();
                    n.NewsTitle = headline.InnerText;
                    n.NewsUrl = headline.Attributes["href"].Value;
                    n.NewsDetails = headline.NextSibling.InnerText.Replace("- ", "新闻来源:") + headline.NextSibling.NextSibling.InnerText + headline.NextSibling.NextSibling.NextSibling.InnerText;
                    newsList.Add(n);
                }
            }
        }

        catch (Exception ex)
        {
            //NewsSource.Text = ex.StackTrace + "\n" + ex.Message;
        }




        NewslistBox.ItemsSource = newsList;
        //NewsHeadlineWebBrowser.NavigateToString(ConvertExtendedASCII(headNews));
    }
}

1 Ответ

0 голосов
/ 13 декабря 2011

Я бы отладил значение, переданное GetHeadlinePage().

Я подозреваю, что ответ отличается в зависимости от сети, или время запроса истекло, или вы получаете какую-то другую ошибку.

Я бы предположил, что вызов LoadHtml() терпит неудачу, поскольку это не входит ни в какую обработку / перехват исключений, и вы не проверяете переданное ему значение.

...