0

我目前正在尝试将 .Net 应用程序移植到 Objective C 和 Cocoa。我知道基础知识,并且在大多数事情上都没有遇到什么麻烦。但我无法从 Web 检索数据。

在 C# 中,我会使用 POST 和 GET 从服务器中检索信息

byte[] buffer = Encoding.ASCII.GetBytes("someData");

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("url");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = buffer.Length;

Stream postData = request.GetRequestStream();
postData.Write(buffer, 0, buffer.Length);
postData.Close();

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());

while (!reader.EndOfStream)
{
   String data = read.ReadLine();
   //Do something such as an update on each line read in
}

reader.Close();
response.Close(); 

但我没有太多运气找到可可等效物。我见过使用 NSUrlDownload 之类的东西,但我能找到的所有示例总是将数据下载显示为单个阻塞函数调用。我需要的是能够在收到数据时更新内容,而不仅仅是等待所有数据到达然后处理它。理想情况下,我将能够处理不同类型的数据,例如文本或二进制数据,因此我需要类似于流的东西,我可以将其传递给某种解析器。

所以我的问题是上面的 C# 代码的等价物是什么?

4

1 回答 1

3

您需要使用NSURLConnection和分配一个对象作为其委托。当连接接收数据时,它将调用-connection:didReceiveData:委托方法,您可以根据需要使用该方法处理传入数据。

您需要自己构建 HTTP POST 请求。我在对这个问题的回答中发布了一些代码来说明如何做到这一点。

于 2010-05-05T12:50:38.753 回答