1

Web サイトにアクセスし、 を使用してデータを取得します。データの取得中に表示するHttpWebRequestには が必要です。ただし、画面が暗くなるだけで、手遅れになるまでアラートは表示されません. ここで他のスレッド関連の質問を読みましたが、これを解決する方法がわかりません。ThreadPool、InvokeOnMainThread、Tasks を使用してみましたが、すべて機能しませんでした。UIAlertViewUIActivityIndicatorView

編集:

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の 1 つです。*AsyncHttpWebRequest

小さな画像をダウンロードして表示する例を次に示します。

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));

EDIT(更新された質問用)

使用できるストリームWebClient.OpenReadAsyncOpenReadCompletedイベントの場合。

于 2012-09-27T17:19:45.120 に答える