有没有办法拦截iPhone中的HTTP请求?例如我可以注册NSNotificationCenter中的某些内容,这样每次HTTP请求结束或HTTP响应进入时我的应用都会收到通知吗?
我搜索了很多但没有运气,
谢谢
答案 0 :(得分:2)
从你的问题不清楚你想做什么,但我会建议实现NSURLProtocol类或使用PonyDebugger。
<强> NSURLProtocol 强>
创建一个NSURLProtocol类的子类,它将处理所有Web协议,如HTTP,HTTPS,SSL等。这是一个抽象类,它提供了执行特定于协议的URL数据加载的基本结构。
创建自定义URL协议后,请在appDelegate类中注册,以使您的协议优先于任何内置协议。
[NSURLProtocol registerClass:[MyURLProtocol class]];
<强> PonyDebugger 强>
如果您只是想拦截所有的http请求,我会试试这个工具。 PonyDebugger是一个远程调试工具集。它是一个客户端库和网关服务器组合,使用浏览器上的Chrome开发者工具来调试应用程序的网络流量和托管对象上下文。
AFNetworking:
如果您使用非常流行的AFNetworking为您的网络请求,他们会自动发送通知。尝试注册以下两个:
AFNetworkingTaskDidResumeNotification
AFNetworkingTaskDidCompleteNotification
答案 1 :(得分:2)
你不能用你的应用程序拦截HTTP请求 - 你当然可以作为你的OWN应用程序请求的代理,但是你无法代理其他应用程序的请求
答案 2 :(得分:0)
您是否只想查看从您控制的单个设备(例如用于调试目的)的所有HTTP / HTTPS流量?如果是这样,只需设置代理并使用它来监控请求。
如果您正在谈论将其构建到一个应用程序以进行一般发布,我非常希望这不可能,如果是的话,我怀疑它不会#39; t通过应用商店批准。
如果您只想要一个调试代理:
对于Windows,请下载Fiddler(免费),然后使用您的并按照此处的说明操作(在手机上安装证书并使用运行Fiddler的计算机的IP地址作为代理地址): http://docs.telerik.com/fiddler/configure-fiddler/tasks/ConfigureForiOS
对于Mac OSX,Charles也会做这项工作(我已经将它用于此目的并且效果很好): http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/