【问题标题】:dataWithContentsOfURL and HTTP 302 redirectsdataWithContentsOfURL 和 HTTP 302 重定向
【发布时间】:2012-03-06 13:31:12
【问题描述】:

[NSData dataWithContentsOfURL:] 如何处理 302 重定向?

我通过传递 PHP 页面的 URL 从服务器请求 MP3 文件,该页面将检查用户代理并重定向到不同服务器上的 MP3 文件。

【问题讨论】:

  • 你自己试过了吗?
  • @Joe,不,我没有,因为它的服务器端还没有上线,我不想浪费时间走一条行不通的路。我只是认为其他人可能以前尝试过,发现它失败了,可以分享他们的经验。
  • 好吧,我确信它可以正常工作,但您可以通过创建重定向 URL 并调用它来确定。以goo.gl 为例。

标签: objective-c ios nsdata http-status-code-302


【解决方案1】:

切勿在实际应用中使用[NSData dataWithContentsOfURL:]。它建立一个同步网络连接,如果完成速度不够快,您的应用程序将被操作系统杀死。

坚持NSURLConnectionDataDelegate或使用[NSURLConnection sendAsynchronousRequest:queue:completionHandler:

【讨论】:

  • 我最终使用了[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]。我现在发现了多线程。作为记录,NSURLConnection 确实正确处理了 302。
  • 这不是原始问题的答案。 +dataWithContentsOfURL: 也可以在“真实应用”的另一个线程中使用
  • 这是不正确的。 [NSData dataWithContentsOfURL:] 可以在单独的线程中使用,它是 100% 安全的
【解决方案2】:

编写包含[NSData dataWithContentsOfURL:]loadImageInBackground 函数 并在后台线程中运行它,如下所示:

[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:nil];

这不会建立同步网络连接(因此不会冻结 UI)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 2013-06-20
    • 2018-07-15
    • 2019-05-10
    • 2017-03-16
    相关资源
    最近更新 更多