我想拦截应用程序中的所有网络调用(请求和响应),因此我正在实现具体的URLProtocol
子类。
大多数在线示例仅使用每个任务的默认配置创建一个新的URLSession
。这意味着原始会话中的所有配置都将丢失。
一种方法是从init(task: URLSessionTask, cachedResponse: CachedURLResponse?, client: URLProtocolClient?)
存储任务并在startLoading()
中恢复任务,但是没有办法通知任务结果。
似乎我可以创建一个新的会话并松开配置,也可以重用该会话,但不能得到任务事件的通知,但不能同时接收到这两个消息。
问题:我如何实现URLProtocol
,更准确地说是startLoading()
,以使会话配置不会丢失,并且仍能获得任务的委托回调? >
想法:
URLProtocol
并烦恼一堆URLSession
和URLSessionTask
方法。缺点:需要花很多时间。