问题标签 [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.
iphone - 返回自定义 NSURLResponse 类
我尝试在我的自定义 NSURLProtocol 中返回 NSURLResponse 子类的对象,但似乎返回的响应总是由普通的 NSURLResponse 交换。
这是我返回自定义 TestURLResponse 的 NSURLProtocol 的一部分:
当我用这个协议读到一些东西时,我希望得到 TestURLResponse 类型的响应,但是在下面的代码中,我总是得到一个 NSURLResponse:
整个测试项目可以在以下位置下载
现在我不知道是我做错了什么还是有什么坏了。NSURLProtocol 的文档说明
协议实现者可能希望创建一个自定义的、可变的 NSURLResponse 类来提供协议特定的信息。
但在我看来,这根本行不通。
iphone - 不调用 NSURLConnection 委托方法
我正在尝试创建一个简单的 NSURLConnection 以使用 GET 请求与服务器进行通信。Connection 运行良好,但从未调用 NSURLConnection 的委托方法。
这是正在做的事情:
已经实现了以下委托方法,但没有一个被调用..
我错过了什么吗?
ios - 自定义 NSURLProtocol 未在第二个 webview 中使用
我已经使用以下代码NSURLProtocol
对其进行了子类化和注册:didFinishLaunchingWithOptions
对于UIWebView
我的应用程序中的第一个(在主窗口中),该方法canInitWithRequest
被触发,我可以执行我的自定义代码。
但是我有第二个UIWebView
,它UIViewController
在应用程序中的某个点被推送(以模态方式呈现)。将canInitWithRequest
不会为第二个调用UIWebView
,因此我无法执行我的自定义代码。在创建两个实例之后注册协议时甚至是这样UIWebView
。
有谁知道为什么?
[编辑] 哦!我刚刚发现它只是加载在第二个 webview 中的 javascript 中的一个简单错误 :( 现在在两个 webview 中都像一个魅力!
ios - NSURLProtocol 和 post 上传进度
我正在使用 NSURLProtocol 的子类来拦截所有 HTTP 调用并修改用户代理以及添加我的服务器所需的其他 http 标头。
然后我的协议使用 NSURLConnection
然后我通过将调用转发到等效的 NSURLProtocolClient 方法来实现 NSURLConnection 中的所有委托方法。这通常效果很好,但是当我将数据上传到服务器时,我使用 NSURLConnection 的代码不会被回调:
连接:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:
我理解为什么会这样,因为我没有在 NSURLProtocol 中实现该方法,因为没有可用于报告上传进度的等效 NSURLProtocolClient 方法。
有人找到解决方法了吗?
iphone - 使用带有 UIWebView 和 POST 请求的自定义 NSURLProtocol
在我的 iOS 应用程序中,我使用 UIWebView 和自定义协议(使用我自己的 NSURLProtocol 实现)。我一直非常小心地确保每当我加载一个 url 时,我都会将类似这样的内容加载到我的 UIWebView 中:
我的协议://我的服务器/我的路径
在我的 NSURLProtocol 实现中,我获取了 NSURLRequest 的可变副本,将 URL 转换为 http: 并将其发送到我的服务器。
一切都适用于 HTTP GET 请求。我遇到的问题是 POST 请求。如果请求使用我的自定义协议,UIWebView 似乎没有正确编码 HTTPBody 中的表单数据。
一种解决方法是,因为我对服务器请求使用 HTTPS,所以我注册协议处理程序以拦截 http: 而不是 myprotocol: 并且我可以将所有调用转换为 https: This other question, here指出了我解决方案:
但我想知道是否有任何替代和/或更好的方法来完成我想要的。
objective-c - 自定义 NSURLProtocol 应该跟随重定向本身,还是让其客户担心?
NSURLProtocolClient协议包含一个方法,NSURLProtocol-URLProtocol:wasRedirectedToRequest:redirectResponse:
子类的实例应该用来告诉 URL 协议客户端请求已被重定向。但是,我不确定 URL 协议是否应该尝试从重定向的 URL 中检索资源,或者让客户端对该资源发出新请求。
谁能告诉我在重定向的情况下原始 URL 协议对象应该做什么?
ios - 修改 NSHTTPURLResponse 中的标头
是否可以在不使用该方法的情况下修改 NSHTTPURLResponse 上的标头
创建一个新的自定义 NSHTTPURLResponse
ios - 通过 NSURLProtocol 子类从相对路径加载资源
我为基于 UIWebView 的应用程序注册了一个 NSURLProtocol,设置为响应file
方案请求。
在 web 视图中,我加载图像、CSS、JS 等,一切正常;当我尝试引用不在 HTML 树根目录中的 CSS 文件中的图像时,问题就出现了。例如
查看到达我的 NSURLProtocol 的请求,我看不到确定请求文件在源树中的位置的方法。
例如,如果上面的 HTML 在一个名为 的文件中,我的 NSURLProtocol 子类将从该文件中source/index.html
获取一个请求。../2.png
source/css/style.css
这应该解析为source/2.png
,但我不知道路径中应该css
包含那个子目录。
有什么方法可以获取有关请求源的更多上下文,以便在查找请求的文件时修复路径?
ios - 有没有办法在加载 html 页面时捕获所有 NSURLRequests?
具体来说:如果我想下载一个 html 页面,有很多对图像、音乐、js 等的请求,UIWebView 代表无法处理这些请求。
更具体地说:我对处理 ajax 请求很感兴趣!我试图通过在每个加载的 html 页面中注入 javascript 来实现 ajax-handler(来源:UIWebViewDelegate 不监视 XMLHttpRequest?),但这不起作用(iOS 5.1.1)。
我认为有通过实现 NSURLProtocol 子类(简单代理)的解决方案,但我不知道如何。
请帮忙!
ios - CDVURLProtocol - 触发 ajax 调用时未执行 startLoading 方法
我正在尝试捕获传出的 ajax 调用,以便通过向其添加客户端证书来更改请求。
似乎可以通过继承 NSURLProtocol 来完成。在 Phonegap 中已经有一个名为 CDVURLProtocol 的子类。
调用 canInitWithRequest 方法,但不调用可以实现请求更改的 startLoading 方法。
有任何想法吗 ?
提前致谢,