Monotouch / C#版“stringWithContentsOfUrl”

时间:2010-03-22 14:29:57

标签: c# objective-c xamarin.ios

我正在尝试将一段Objective-C代码转换为C#以与Monotouch一起使用,我不知道如何使用它来替换{​​{1}} 我应该使用类似的东西:

stringWithContentsOfUrl

在MonoTouch中使用它是否安全?它适用于iPhone吗?

2 个答案:

答案 0 :(得分:6)

对于快速作业,您可以使用更简单的WebClient。

这样做:

var web = new System.Net.WebClient ();
var result = web.DownloadString ("http://www.google.com");

WebClient中有各种各样的辅助方法,可以让您下载原始数据或直接下载到文件中。此外,您可以使用这些方法的“异步”版本以异步方式下载数据,并在下载完成时收到通知:

web.DownloadStringCompleted += delegate (object sender, DownloadStringCompletedEventArgs e){
   Console.WriteLine ("Got {0}", e.Result);
}
web.DownloadStringAsync ("http://www.google.com");

如果您正在使用Async变体,请记住您无法直接调用任何UI方法,因为UIKit不是支持从多个线程访问的工具包。您必须使用NSObject.InvokeOnMainThread来确保在正确的线程中调用您调用的代码:

web.DownloadStringCompleted += delegate (object sender, DownloadStringCompletedEventArgs e){
   label.InvokeOnMainThread (delegate { label.Text = e.Result; });
}
web.DownloadStringAsync ("http://www.google.com");

答案 1 :(得分:1)

对我来说很好看。我有一些代码,我在一段时间内一起攻击类似的东西,效果很好。

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create (tmpMPURL);
request.Method = "GET";

WebResponse response = request.GetResponse ();
StreamReader reader = new StreamReader (response.GetResponseStream (),Encoding.GetEncoding("iso-8859-1"));

string responseString = reader.ReadToEnd ();
reader.Close ();

XmlDocument xmlDoc = new XmlDocument ();
xmlDoc.LoadXml (responseString);