实施URLProtocol但要注意会话配置

时间:2018-12-12 16:13:03

标签: ios nsurlsession nsurlprotocol nsurlsessionconfiguration

我想拦截应用程序中的所有网络调用(请求和响应),因此我正在实现具体的URLProtocol子类。

大多数在线示例仅使用每个任务的默认配置创建一个新的URLSession。这意味着原始会话中的所有配置都将丢失。

一种方法是从init(task: URLSessionTask, cachedResponse: CachedURLResponse?, client: URLProtocolClient?)存储任务并在startLoading()中恢复任务,但是没有办法通知任务结果。

似乎我可以创建一个新的会话并松开配置,也可以重用该会话,但不能得到任务事件的通知,但不能同时接收到这两个消息。

问题:我如何实现URLProtocol,更准确地说是startLoading(),以使会话配置不会丢失,并且仍能获得任务的委托回调? >

想法:

  1. 从任务中提取会话(和配置)。缺点:暴露不保证存在的私有财产。
  2. 放弃URLProtocol并烦恼一堆URLSessionURLSessionTask方法。缺点:需要花很多时间。

0 个答案:

没有答案