2012-03-06 157 views
2

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

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

+0

你甚至尝试过吗? – Joe 2012-03-06 13:43:22

+0

@Joe,不,我没有,因为它的服务器端还没有生效,我不想浪费时间走下一条不起作用的道路。我只是觉得其他人可能以前尝试过,发现它失败了,可以分享他们的经验。 – colincameron 2012-03-06 13:46:15

+0

嗯,我相信它可以正常工作,但您可以确定通过创建重定向URL并将其调用。例如尝试http://goo.gl。 – Joe 2012-03-06 14:36:06

回答

2

千万不要在真实应用中使用[NSData dataWithContentsOfURL:]。它会建立一个同步的网络连接,如果速度不够快,你的应用将被操作系统杀死。

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

+0

我结束了使用'[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]''。我现在发现了多线程。为了记录,'NSURLConnection'确实处理302。 – colincameron 2012-03-09 10:56:22

+4

这不是原始问题的答案。 + dataWithContentsOfURL:也可以在“真实应用程序”的另一个线程中使用 – igrek 2014-10-08 06:40:15

+0

这是不正确的。 '[NSData dataWithContentsOfURL:]'可以在单独的线程中使用,它将100%安全。 – Antzi 2015-06-26 14:41:41

1

撰写您loadImageInBackground功能包含[NSData dataWithContentsOfURL:] ,并在后台线程中运行它,就像这样:

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

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