从可可应用程序访问网络服务器

发布于 2024-07-11 00:45:49 字数 111 浏览 10 评论 0原文

我正在编写一个可可应用程序,我想在其中从网络服务器下载文件。 执行此操作最方便的方法是什么? 我应该使用 NSSockets 还是 NSUrlRequest? 或者还有其他更简单的方法来实现这一目标吗?

I am writing a cocoa application in which I want to download a file from a webserver. What will be the most convenient method to go about doing this? Should I go in for NSSockets or a NSUrlRequest? Or is there any other easier way to achieve this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夏末 2024-07-18 00:45:49

如果要将文件的内容加载到内存中,许多 Cocoa 数据类(例如 NSString、NSData 甚至 NSDictionary)都有 initWithURL: 方法,这些方法直接使用 Web 请求的内容进行初始化。 它们非常易于使用,但不太灵活,也不能提供良好的错误处理。 NSURLConnection 提供了一种更灵活的方式来加载数据(如果您需要的话)。

如果您想将文件直接下载到磁盘,那么 NSURLDownload 将是最好的选择。

If you want to load the contents of the file into memory, many of the Cocoa data classes such as NSString, NSData and even NSDictionary have initWithURL: methods, which initialize directly with the contents of a web request. They're very easy to use, but they're not very flexible or provide for good error handling. NSURLConnection provides a more flexible way to load data if you need it.

If you want to download the file directly to disk, then NSURLDownload would be the best bet.

春庭雪 2024-07-18 00:45:49

警告: initWithURL: 方法是阻塞的,如果文件很大、服务器很慢、用户的互联网连接很慢等,这会是一个大问题。不要从主线程调用它们。

您也不会收到任何进度报告,因此当下载缓慢时,您无法告诉用户下载进度或需要多长时间。

几乎在所有情况下,您都应该使用 NSURLDownload 或 NSURLConnection。

A word of warning: The initWithURL: methods are blocking, which is a big problem if the file is large, the server is slow, the user's internet connection is slow, etc. Don't call them from the main thread.

You also don't get any progress reporting, so when the download is slow, you have no way to tell the user how far along it is or how much longer it will take.

In almost all cases, you should use NSURLDownload or NSURLConnection instead.

黯然 2024-07-18 00:45:49

最简单的方法可能是使用 NSURLDownload 和 NSURLRequest。

The simplest thing to do is probably use NSURLDownload with NSURLRequest.

ゃ人海孤独症 2024-07-18 00:45:49

如果您想将 Web 服务中的数据获取到 NSString 或 NSData 中,NSURLConnection 是不错的选择。 确保在 NSURLConnection 方法中进行异步调用并处理错误和数据

这是 REST 风格调用的一个很好的示例
http://kosmaczewski.net/2008/03/26/playing -with-http-libraries/

NSURLConnection is good if you want to get data from the web service into an NSString or NSData. Make sure you make asynchronous calls and handle errors and data in the NSURLConnection methods

Here's a good example for REST-style calls
http://kosmaczewski.net/2008/03/26/playing-with-http-libraries/

北城半夏 2024-07-18 00:45:49

NSURLConnection 确实为您提供了最大的粒度,但要小心 NSURLConnection 的 sendSynchronousRequest() 方法。 每次都会泄漏内存(已附加 XCode Leak Instrumentation工具并运行它来向自己证明这一点),并且有时会无缘无故地给出奇怪的 HTTP 204 响应。 我已在此处发布了有关此内容的博客

NSURLConnection does give you the most granularity, but be careful with NSURLConnection's sendSynchronousRequest() method. It leaks memory each time (have attached the XCode Leak Instrumentation tool and run it to prove it to myself) and gives weird HTTP 204 responses for no reason at all on occasion. I've blogged about this here

潦草背影 2024-07-18 00:45:49

另一种方法是使用 libcurl,它预装在任何 OS X 系统上。 如果您使用这种方法,您最好确保尊重代理等系统设置。

And another way is using libcurl, which comes preinstalled on any OS X system. You'd better make sure System Settings like proxies etc. are respected though if you use this approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文