C# Monotouch/C版本的“stringWithContentsOfUrl”

C# Monotouch/C版本的“stringWithContentsOfUrl”,c#,objective-c,xamarin.ios,C#,Objective C,Xamarin.ios,我正在尝试将一段Objective-C代码转换为C,以便与Monotouch一起使用,但我不知道用什么来替换stringWithContentsOfUrl 我应该使用类似于: HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://www.helephant.com"); HttpWebResponse response = (HttpWebResponse) request.GetResponse(); if (r

我正在尝试将一段Objective-C代码转换为C,以便与Monotouch一起使用,但我不知道用什么来替换stringWithContentsOfUrl 我应该使用类似于:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://www.helephant.com");
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK &&
    response.ContentLength > 0){
    TextReader reader = new StreamReader(response.GetResponseStream());
    string text = reader.ReadToEnd();
    Console.Write(text);
}

在MonoTouch中使用它安全吗?它对iPhone有用吗?

对我来说很好。我有一些代码,我在前一段时间也做过类似的事情,效果很好

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

我觉得不错。我有一些代码,我在前一段时间也做过类似的事情,效果很好

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

对于快速作业,您可以使用更简单的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");
如果您使用的是异步变量,请记住,您不能直接调用任何UI方法,因为UIKit不是支持从多个线程访问的工具包。您必须使用NSObject.InvokeOnMainThread以确保在正确的线程中调用您调用的代码:

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

对于快速作业,您可以使用更简单的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");
如果您使用的是异步变量,请记住,您不能直接调用任何UI方法,因为UIKit不是支持从多个线程访问的工具包。您必须使用NSObject.InvokeOnMainThread以确保在正确的线程中调用您调用的代码:

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