当我调用URLProtocol:didLoadData:'时,URL加载系统实际上会做什么?在自定义URL协议?

时间:2016-12-04 03:52:38

标签: ios

我使用自定义NSURLProtocol为了在WebView获得响应之前做一些事情,除了这个网址https://dou.bz/23o8PS之外,一切都很顺利。

如果我停止使用NSURLProtocol,只需让WebView加载一个请求(带URL的init),它就可以了。但是如果数据是从协议加载的,那么WebView似乎不会将其视为HTML文件: enter image description here

出了什么问题?

2 个答案:

答案 0 :(得分:2)

我检查标题,发现是:

Content-Type: text/plain

也许其他链接是:

Content-Type: text/html

答案 1 :(得分:0)

您还必须将响应返回到Webview。将以下三行放在startLoading协议方法的末尾:

[[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[[self client] URLProtocol:self didLoadData: body];
[[self client] URLProtocolDidFinishLoading: self];

response对象是NSHTTPURLResponse的一个实例,您必须在其中设置标头的字典(特别是,以任何方式随响应接收的HTTP标头)。 body是您已经在方法中使用的NSData