问题标签 [nsurlprotocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
340 浏览

ios - 获取所有当前注册的 NSURLProtocol 子类的列表?

确定当前在应用程序中注册的所有 NSURLProtocol 子类的正确方法是什么?在文档中,我只看到+ (BOOL)registerClass:(Class)protocolClassand的方法+ (void)unregisterClass:(Class)protocolClass

有谁知道这样做的方法?我正在开发一个具有多个 NSURLProtocols 的应用程序,这些 NSURLProtocols 以不可预测的时间间隔注册和注销,并且需要在某些协议可能会破坏我的响应时进行调试。

编辑: 我已经尝试过[[[NSURLSession sharedSession] configuration] protocolClasses],但它没有显示我自己注册的协议。

0 投票
1 回答
314 浏览

ios - 自定义 NSURLProtocol 子类对后台会话不可用

NSURLSession.h ...

自定义 NSURLProtocol 子类对后台会话不可用。

将自定义 NSURLProtocol 子类限制为仅在前台会话中触发有什么好处?

0 投票
1 回答
156 浏览

javascript - 使用自定义 NSURLProtocol 时如何禁用缓存?

我有一个UIWebView用于加载本地文件的应用程序。我创建了一个自定义 URL 协议,我用它来处理传递给 Web 视图的数据,并在 startLoading 中添加:

同样在启动应用程序时,我使用这段代码禁用了缓存:

但不幸的是,该死的东西仍然允许缓存本地文件。

当我关闭 Web 视图并再次打开它时,不会通过我的 url 协议再次加载 javascript 文件。

我还应该设置什么让它工作?

我的目标是始终通过自定义 url 协议加载文件,而不仅仅是第一次。

对我来说,后续请求不会调用startLoadingin 方法。NSURLProtocol

0 投票
2 回答
519 浏览

ios - 自定义 NSURLProtocol 导致 __psynch_mutexwait

我正在子类化NSURLProtocol以拦截 HTTP 请求。

这是自定义NSURLProtocol类。

我添加一个UIWebView作为子视图,然后加载一个 URL http://ln.clientaccess.10086.cn/shop/optical/Appointment?channel=007&PHONE_NUM=18240235054&AREA_CODE=240&key=4A35774433BA79EB950EDE4B5C4D7121,在控制器被解除后,应用程序被冻结,即使我- stopLoading在 webView 被解除之前调用它也是如此。

这是线程堆栈:

在此处输入图像描述

0 投票
1 回答
743 浏览

ios - 在 NSURLProtocol 中使用 NSURLSession

我正在尝试使用 NSURLSession 为 http:// 和 https:// 连接创建一个透明的 NSURLProtocol。然而,目前,即使完成处理程序正在运行,应用程序 (UIWebView) 的 URL 请求也会返回空白。有人有什么想法吗?代码如下:

0 投票
2 回答
527 浏览

ios - UIWebView 使用 NSUrlProtocol Xamarin.Forms 加载缓慢

我正在使用 Xamarin.Forms 开发 iOS 应用程序。

此应用程序正在使用 UIWebView 控制器,该控制器显示托管在我的服务器上的 Web 应用程序。每次我发出请求时,我都必须发送一个自定义标头以识别此请求来自移动应用程序而不是来自浏览器,为此我使用了一个NSUrlProtocol对象,该对象覆盖了插入每个请求的自定义标头。这是我的代码:

我现在遇到的问题是,自从我开始使用NSUrlProtocol以来,我注意到页面的加载时间增加了很多。现在加载需要 10 秒,在此实现之前页面大约需要 3 秒。

谁能指出一些有用的方向来克服这个问题?

0 投票
1 回答
286 浏览

ios - iOS 8 上的 NSURLSession 和 NSURLProtocol 问题

我有一个应用程序在 iOS 9 上运行良好,自定义NSURLProtocol实现了NSURLSession. 客户端执行的所有请求也已完成,NSURLSession并且每个请求都sessionConfiguration在执行请求之前注册到协议。

我在 iOS 8 上遇到了 iOS 9 没有的问题。使用 iOS8 时,CustomNSURLProtocol会不停地执行该请求,基本上是同一请求的无限循环。canInitWithRequest:在自定义协议中,在 iOS 8 上比在 iOS 9 上调用方式更多,这基本上驱动方法startLoading在我的协议应该执行的一些标头修改后被调用并触发请求。

iOS8 是否存在已知问题,其中NSURLProtocols 和NSURLSession不按预期运行?

0 投票
1 回答
114 浏览

ios - NSURLProtocol 没有响应 UIWebviews

我在我的应用程序中遇到了UIWebviews和几个自定义NSURLProtocols的问题。

我所有的web 视图请求都是用 NSURLSession 调用的,所以为了让这些请求通过协议,我需要setProtocolClasses在我的 sessionconfig 上设置数组,此时一切都按预期工作。对于我的 Web 视图,我didFinishLaunchingWithOptions:在 AppDelegate 中使用[NSURLProtocol register class[MyProtocol Class]]. 如果我在执行 Web 视图请求之前不重新注册,则该 Web 视图请求将不会通过协议。

你们知道为什么每次我尝试加载网络视图请求时都必须重新注册我的自定义协议吗?

0 投票
1 回答
89 浏览

ios - iOS 如何区分 UIWebView 的请求?

如何在 NSURLProtocol 或 NSURLCache 中区分 UIWebView 和 NSURLConnection 之间的 NSURLRequest?

我想在没有 NSURLConnection 的情况下监控 UIWebView 的请求,怎么办?

UIWebView 的内容有资源: js, image, href.

如何区分 NSURLRequest 与此资源和常见的 NSURLConnection?

谢谢。

0 投票
1 回答
1253 浏览

objective-c - +[NSURLProtocol setProperty:forKey:inRequest:] 到底是做什么的

NSURLProtocol定义以下方法:

但是,如果我尝试NSURLAuthenticationChallenge与请求关联,请使用以下代码

我在日志中看到下一个错误:

从这条消息中,我怀疑只有属性列表支持的对象可能与NSURLRequest使用此 API 相关联。但我不完全明白为什么。

另外,我的问题是这个 API 应该用于什么目的。如何正确使用?我想知道究竟是做什么setProperty:forKey:inRequest:的,因为它似乎比简单地将对象与请求相关联做得更多。

UPD所以,最小的可验证示例。非常简单的NSURLProtocol子类:

UPD2现在,我看到缓存是罪魁祸首。即使我使用NSURLCacheStorageNotAllowed,此代码仍会尝试创建缓存字典,并将关联[UIApplication sharedApplication]写入其中。

2016-03-20 20:52:19.630 WebViewDemo[7102:663895] 添加:无法在路径=/Users/xxx/Library/Developer/CoreSimulator/Devices/89D7C50F-939B-4360-A19F-4547AE4F7515/data 创建缓存字典/Containers/Data/Application/6F05411C-0261-4A33-9531-9E4E900C4910/Library/Caches/Test.WebViewDemo。键=0x7fe76af45f90

所以,现在我的下一个问题是 - 如何在不实现我自己的关联字典的情况下禁用此缓存。我应该这样做,还是应该避免setProperty:forKey:inRequest:.

而且,最重要的是,正如Apple 示例setProperty:forKey:inRequest:所暗示的那样,用于 store是否正确?我仍在试图弄清楚什么时候可以使用这种方法,什么时候不能。kOurRecursiveRequestFlagProperty