1

我访问一个网站并使用它检索一些数据,HttpWebRequest并且在检索所述数据时我需要一个UIAlertView带有 aUIActivityIndicatorView的显示。但是,它只会使屏幕变暗,直到为时已晚才显示警报。我在这里阅读了其他与线程相关的问题,但不知道如何解决这个问题。我尝试使用 ThreadPool、InvokeOnMainThread、Tasks,所有这些都不起作用。

编辑:

HttpWebRequest url = (HttpWebRequest)WebRequest.Create ("maps.googleapis.com/maps/api/place/search/..); 

HttpWebResponse webResp = (HttpWebResponse)url.GetResponse (); JsonValue jVal = 

JsonObject.Load (webResp.GetResponseStream ()); 

JsonObject jObj = (JsonObject)jVal; 

我有上面的代码,如果它可以为我正确格式化,我将如何将其转换为使用 WebClient?你还能从中得到 JSON 之类的东西吗?

4

1 回答 1

2

WebClient它通常*Async比使用HttpWebRequest.

这是一个下载并显示小图像的示例。

WebClient client = new WebClient ();
var wait = new UIActivityIndicatorView (View.Bounds);
client.DownloadDataCompleted += (object sender, DownloadDataCompletedEventArgs e) => {
    byte[] result = e.Result;
    if (result != null) {
        NSData data = NSData.FromArray (e.Result);
        UIImage img = UIImage.LoadFromData (data);
        InvokeOnMainThread (delegate {
            ShowImage (img);
            wait.StopAnimating ();
        });
    }
};
wait.StartAnimating ();
client.DownloadDataAsync (new Uri (url));

编辑(更新问题)

对于您可以使用WebClient.OpenReadAsync的流和OpenReadCompleted事件。

于 2012-09-27T17:19:45.120 回答