问题标签 [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 投票
0 回答
1577 浏览

iphone - 返回自定义 NSURLResponse 类

我尝试在我的自定义 NSURLProtocol 中返回 NSURLResponse 子类的对象,但似乎返回的响应总是由普通的 NSURLResponse 交换。

这是我返回自定义 TestURLResponse 的 NSURLProtocol 的一部分:

当我用这个协议读到一些东西时,我希望得到 TestURLResponse 类型的响应,但是在下面的代码中,我总是得到一个 NSURLResponse:

整个测试项目可以在以下位置下载

http://ul.to/9yylk65s

现在我不知道是我做错了什么还是有什么坏了。NSURLProtocol 的文档说明

协议实现者可能希望创建一个自定义的、可变的 NSURLResponse 类来提供协议特定的信息。

但在我看来,这根本行不通。

0 投票
4 回答
29654 浏览

iphone - 不调用 NSURLConnection 委托方法

我正在尝试创建一个简单的 NSURLConnection 以使用 GET 请求与服务器进行通信。Connection 运行良好,但从未调用 NSURLConnection 的委托方法。

这是正在做的事情:

已经实现了以下委托方法,但没有一个被调用..

我错过了什么吗?

0 投票
1 回答
948 浏览

ios - 自定义 NSURLProtocol 未在第二个 webview 中使用

我已经使用以下代码NSURLProtocol对其进行了子类化和注册:didFinishLaunchingWithOptions

对于UIWebView我的应用程序中的第一个(在主窗口中),该方法canInitWithRequest被触发,我可以执行我的自定义代码。

但是我有第二个UIWebView,它UIViewController在应用程序中的某个点被推送(以模态方式呈现)。将canInitWithRequest不会为第二个调用UIWebView,因此我无法执行我的自定义代码。在创建两个实例之后注册协议时甚至是这样UIWebView

有谁知道为什么?

[编辑] 哦!我刚刚发现它只是加载在第二个 webview 中的 javascript 中的一个简单错误 :( 现在在两个 webview 中都像一个魅力!

0 投票
2 回答
1255 浏览

ios - NSURLProtocol 和 post 上传进度

我正在使用 NSURLProtocol 的子类来拦截所有 HTTP 调用并修改用户代理以及添加我的服务器所需的其他 http 标头。

然后我的协议使用 NSURLConnection

然后我通过将调用转发到等效的 NSURLProtocolClient 方法来实现 NSURLConnection 中的所有委托方法。这通常效果很好,但是当我将数据上传到服务器时,我使用 NSURLConnection 的代码不会被回调:

连接:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:

我理解为什么会这样,因为我没有在 NSURLProtocol 中实现该方法,因为没有可用于报告上传进度的等效 NSURLProtocolClient 方法。

有人找到解决方法了吗?

0 投票
2 回答
7989 浏览

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指出了我解决方案:

但我想知道是否有任何替代和/或更好的方法来完成我想要的。

0 投票
1 回答
1621 浏览

objective-c - 自定义 NSURLProtocol 应该跟随重定向本身,还是让其客户担心?

NSURLProtocolClient协议包含一个方法,NSURLProtocol-URLProtocol:wasRedirectedToRequest:redirectResponse:子类的实例应该用来告诉 URL 协议客户端请求已被重定向。但是,我不确定 URL 协议是否应该尝试从重定向的 URL 中检索资源,或者让客户端对该资源发出新请求。

谁能告诉我在重定向的情况下原始 URL 协议对象应该做什么?

0 投票
1 回答
2955 浏览

ios - 修改 NSHTTPURLResponse 中的标头

是否可以在不使用该方法的情况下修改 NSHTTPURLResponse 上的标头

创建一个新的自定义 NSHTTPURLResponse

0 投票
1 回答
768 浏览

ios - 通过 NSURLProtocol 子类从相对路径加载资源

我为基于 UIWebView 的应用程序注册了一个 NSURLProtocol,设置为响应file方案请求。

在 web 视图中,我加载图像、CSS、JS 等,一切正常;当我尝试引用不在 HTML 树根目录中的 CSS 文件中的图像时,问题就出现了。例如

查看到达我的 NSURLProtocol 的请求,我看不到确定请求文件在源树中的位置的方法。

例如,如果上面的 HTML 在一个名为 的文件中,我的 NSURLProtocol 子类将从该文件中source/index.html获取一个请求。../2.pngsource/css/style.css

这应该解析为source/2.png,但我不知道路径中应该css包含那个子目录。

有什么方法可以获取有关请求源的更多上下文,以便在查找请求的文件时修复路径?

0 投票
1 回答
1109 浏览

ios - 有没有办法在加载 html 页面时捕获所有 NSURLRequests?

具体来说:如果我想下载一个 html 页面,有很多对图像、音乐、js 等的请求,UIWebView 代表无法处理这些请求。

更具体地说:我对处理 ajax 请求很感兴趣!我试图通过在每个加载的 html 页面中注入 javascript 来实现 ajax-handler(来源:UIWebViewDelegate 不监视 XMLHttpRequest?),但这不起作用(iOS 5.1.1)。

我认为有通过实现 NSURLProtocol 子类(简单代理)的解决方案,但我不知道如何。

请帮忙!

0 投票
1 回答
512 浏览

ios - CDVURLProtocol - 触发 ajax 调用时未执行 startLoading 方法

我正在尝试捕获传出的 ajax 调用,以便通过向其添加客户端证书来更改请求。

似乎可以通过继承 NSURLProtocol 来完成。在 Phonegap 中已经有一个名为 CDVURLProtocol 的子类。

调用 canInitWithRequest 方法,但不调用可以实现请求更改的 startLoading 方法。

有任何想法吗 ?

提前致谢,