.Net HttpWebRequest/Response Cocoa 等效项

标签 .net objective-c cocoa httpwebrequest httpwebresponse

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

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

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

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

最佳答案

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

您需要自己构建 HTTP POST 请求。我在对 this question 的回答中发布了一些代码,展示了如何执行此操作。 .

关于.Net HttpWebRequest/Response Cocoa 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2772837/

相关文章:

C++ .NET - 如何处理位图?

javascript - 绕过WebView跨域安全

cocoa - 合并NSTableView的单元格

ios - 在 iOS 设备上检测事件的 AVAudioSession

objective-c - 是否可以存储和检索使用 Objective-C 创建的对象? (在数据库中,用于 iOS 应用程序)

cocoa - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BORDER, 0);抛出 GL_INVALID_ENUM?

c# - 如何删除键盘删除键上的 dataGridView 行? C#

.net - 取消异步操作

c# - 如何找到介于其他两种颜色之间的颜色?

c++ - Objective-C++ 错误中的二维数组声明