用Windows Phone 7解析JSON对象

问题描述:

我想从我创建的Uri中读取并在windows phone 7应用上显示它。 (我在做这个教程:http://msdn.microsoft.com/en-us/windowsmobile/Video/hh237494)。用Windows Phone 7解析JSON对象

我的问题是,该程序不进入OpenReadCompletedEventHandler,我不知道为什么。 (我把消息框为了调试,我发现程序不会进入OpenReadCompletedEventHandler)。这里是相关的代码:

void myButton_Click(object sender, RoutedEventArgs e) 
    { 

     try 
     { 
      WebClient webClient = new WebClient(); 
      Uri uri = new Uri("http://localhost:44705/Service1.svc/GetAllBrands"); 
      webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted); 
      try 
      { 
       webClient.OpenWriteAsync(uri); 
       MessageBox.Show("opening sucsseded"); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
    void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     MessageBox.Show("OpenRead Handler"); 

     // OpenWriteCompletedEventArgs temp = (OpenWriteCompletedEventArgs)e; 
     DataContractJsonSerializer serializer = null; 
     try 
     { 
      serializer = new DataContractJsonSerializer(typeof(ObservableCollection<Brand>)); 
      ObservableCollection<Brand> Brands = serializer.ReadObject(e.Result) as ObservableCollection<Brand>; 
      foreach (Brand b in Brands) 
      { 
       int id = b.BrandId; 
       string name = b.BrandName; 
       listBrands.Items.Add(id + "    " + name); 

      } 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

    } 

在此先感谢!

我从来没有使用过这一点,但快速谷歌带我到这个页面上MSDN - http://msdn.microsoft.com/en-us/library/system.net.webclient.openreadcompleted.aspx

这应该告诉你为什么它不工作 - 因为你使用的是读取事件写入操作。您应该使用OpenWriteCompletedEventHandlerOpenWriteAsync按照MSDN上的此页面 - http://msdn.microsoft.com/en-us/library/system.net.webclient.openwritecompleted.aspx