iOS 关于网络重定向的实现以及相关坑的记录
之前在项目中遇到个问题,既可以说是坑也可以说是自己对一些非常iOS特性的东西的不了解所导致。记录以备有需要的同学或者自己忘了可以回头看看。
先说下简化后的场景:现在server1提供了一个url让我去打开它,然后用户就在这个html的网页上做操作,然后比如点击某个按键提交一些信息到server1,问题来了,这个时候server1与另一个server2做交互并对url进行多次重定向。。具体更复杂一点,大概就是原来用某个url显示的webview经过url的重定向,而我需要拿到每次重定向的response,这里就出现了最后一个response我拿不到的情形。当然每次的request我可以拿到,那么request的url我也可以拿到,那我手动去请求,但这又不符合应用场景,而且也不太科学。
开始折腾了好一会,也很郁闷,后来发现类似这种情况是必须自己手动去实现NSURLProtocol:
|
|
|
|
这样子我就将会在- (void) connection:(NSURLConnection )connection didReceiveResponse:(NSURLResponse )response这个函数里获得response
在你需要之前加入以下这句话
|
|
用完记得还是把它移除掉,不然你的重定向协议是会一直影响你的App的,直到你自己手动移除掉它。
|
|
先记录到这,其实这样子你就可以自己去定制协议定制规则,but最好别这么干吧,需要点功底的感觉。不然自己坑自己的节奏~