使用NSURLConnection忽略301永久重定向

时间:2014-10-29 17:13:34

标签: ios cocoa-touch http redirect nsurlconnection

我使用的无法控制的API在不应该使用301永久重定向时使用。我需要我的NSURLConnection忽略它过去被永久重定向以便将来请求的事实。

这是Clarity的一个例子。

我正在连接http://stupidapi.com/users/frank/profilepicture。它执行301重定向到http://profilepictures.stupidapi.com/52435346324,其中包含我正在寻找的个人资料图片。

让我们说后来弗兰克登录他的帐户并更改他的个人资料图片。现在,当我想要新的个人资料图片时,我会转到http://stupidapi.com/users/frank/profilepicture,但由于我提出的第一个请求是301永久重定向,因此它会将我发回http://profilepictures.stupidapi.com/52435346324这是旧图片。如果这是我第一次请求,它会将我发送给http://profilepictures.stupidapi.com/34535476557以获取新图片。

如何让NSURLConnection始终转到最新版本的图片?

我已尝试将NSURLRequest缓存策略设置为NSURLRequestReloadIgnoringCache

request.cachePolicy = NSURLRequestReloadIgnoringCache;    

在使用

发出请求之前,我还尝试清除NSURLCache
[NSURLCache sharedURLCache] removeAllCachedResponses];

到目前为止都没有奏效。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了一个讨厌的解决方案,但它是我能想到的最好的。

指定的原始URL并不关心大写,所以基本上每次我向它发送请求时,我都会将URL的特定部分中的每个字母随机设置为大写或小写。

基本上我不是去http://stupidapi.com/users/frank/profilepicture而是http://stupidapi.com/users/FrAnk/profilepicture。如果我点击了一个尚未缓存的,那么我会得到新的图片。

对于我的特定用例,这种方法效果很好。