iOS 有谁知道如何向 NSURLRequest 添加代理吗?

2023-11-27

我正在设置一个网络视图,但我需要使用代理加载网络视图的内容。你们中有人知道我如何在 NSURLRequest 中实现代理吗?

例如:

    NSString *location=@"http://google.com";
    NSURL *url=[NSURL URLWithString:location];
    NSURLRequest *request=[NSURLRequest requestWithURL:url];
//    some code to set the proxy

    [self.myWebView loadRequest:request];

我非常感谢你的帮助


看一眼iOS URL加载系统NSURL协议

您可以为您的 NSURLRequest 编写自定义 NSURLProtocol 类。自定义 NSURLProtocol 可以拦截您的请求并向每个请求添加代理。相关方法是-(void)startLoading,在此方法中,您可以使用 Core-Function(iOS 中的一个低级 api)将代理添加到每个请求:

//"request" is your NSURLRequest
NSURL *url = [request URL];
NSString *urlString = [url absoluteString];

CFStringRef urlStringRef = (CFStringRef) urlString;
CFURLRef myURL = CFURLCreateWithString(kCFAllocatorDefault, urlStringRef, NULL);
CFStringRef requestMethod = CFSTR("GET");

CFHTTPMessageRef myRequest = CFHTTPMessageCreateRequest(kCFAllocatorDefault, requestMethod, myURL, kCFHTTPVersion1_1);

self.httpMessageRef = CFHTTPMessageCreateCopy(kCFAllocatorDefault, myRequest);

CFReadStreamRef myReadStream = CFReadStreamCreateForHTTPRequest(kCFAllocatorDefault, myRequest);

// You can add body, headers.... using core function api, CFNetwork.etc

// below code is to set proxy from code if needs
NSString *hostKey;
NSString *portKey;
if ([[[urlString scheme] lowercaseString] isEqualToString:@"https"]) {
    hostKey = (NSString *)kCFStreamPropertyHTTPSProxyHost;
    portKey = (NSString *)kCFStreamPropertyHTTPSProxyPort;
} else {
    hostKey = (NSString *)kCFStreamPropertyHTTPProxyHost;
    portKey = (NSString *)kCFStreamPropertyHTTPProxyPort;
}

//set http or https proxy, change "localhost" to your proxy host, change "5566" to your proxy port 
NSMutableDictionary *proxyToUse = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"localhost",hostKey,[NSNumber numberWithInt:5566],portKey,nil];

CFReadStreamSetProperty(myReadStream, kCFStreamPropertyHTTPProxy, proxyToUse);
CFReadStreamOpen(myReadStream);

希望这可以帮到你。

不要忘记将您的自定义 NSURLProtocol 注册到您的委托。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 有谁知道如何向 NSURLRequest 添加代理吗? 的相关文章

随机推荐

  • 检测 iOS8 中 UITextField 中的退格键

    为了检测退格键 我已经覆盖了DeleteBackward方法 适用于iOS5 var input new BackspaceTextField RectangleF Empty etc input BecomeFirstResponder
  • 只有一个锁定对象的“死锁”?

    我在 C 中遇到多线程问题 我使用一个事件从另一个线程更新表单中的标签 当然 我需要使用 Invoke 命令 该部分也工作正常 但是 用户可以关闭表单 如果在不合适的时间发送事件 程序可能会崩溃 因此 我想我只需重写表单的 Dispose
  • 将 SWF 加载到 WebView 中

    我遇到了这个问题 如果我直接在浏览器中访问 SWF 则效果很好 如果我尝试在 SWF 文件上使用 loadUrl 它会保持空白并且不加载任何内容 弄清楚了 您必须启用插件 webview getSettings setPluginsEnab
  • 您将如何实施越位规则?

    我已经编写了一个可以实现这一目的的生成器 但我想知道实现越位规则的最佳方法 不久 越位规则意味着在这种情况下 缩进被认为是一个语法元素 这是伪代码中的越位规则 用于制作以可用形式捕获缩进的分词器 我不想按语言限制答案 token NEWLI
  • 从 EC2 实例内调用 Spark-EC2:与主机的 ssh 连接被拒绝

    为了运行 Amplab 的训练练习 我创建了一个密钥对us east 1 已经安装了训练脚本 git clone git github com amplab training scripts git b ampcamp4 并创建了环境 变量
  • 窗口底部的 div 和自适应高度 div

    有没有办法让一个 div 始终位于窗口的底部 另一个 div 改变其高度以填充它留下的任何空间 并且如果该 div 的内容太长 它就会滚动 我从不希望窗口滚动 用一张图片最好地说明这一点 div 布局 http img401 imagesh
  • CSS 圆圈没有宽度或高度? : 这可以用纯 CSS 实现吗?

    我可以将 div 变成一个圆圈 如下所示 circle background color rgba 0 0139 0139 0 5 height 200px width 200px moz border radius 50 webkit b
  • 表格上的 Flexbox 在 Firefox 中不起作用

    使用 flexbox 控制表格的布局在 webkit 浏览器中有效 但在 Firefox 中 td s 仅渲染与其自身内容一样宽的内容 示范 http codepen io afraser pen wMgbzr editors 010 bo
  • 原始布尔值到字符串连接/转换

    这是如何运作的 我似乎找不到答案 boolean bool true System out println the value of bool is true or System out println the value of bool
  • 解决使用ajax发送阿拉伯字符的问题

    我使用 AJAX 表单将数据发送到另一个名为 show php 的页面 以下是页面来源 表单 html div div
  • 如何更新流程中的类成员? [复制]

    这个问题在这里已经有答案了 我寻找过其他问题 并且这个未接受回答的问题是我能找到的唯一一个以某种方式涵盖这个问题并且没有真正帮助的人 另外 我需要它来处理进程 而不是线程 因此 我从头开始编写了一个示例程序来展示我的问题 您应该能够粘贴它并
  • Xamarin 应用程序在设备上启动时崩溃,但在模拟器中运行良好

    如果有任何建议 请在 OS 10 8 上使用 SDK6 1 和 Xcode 5 不胜感激 应用程序在启动后立即崩溃 并且根本无法进入调试器 TestFlight 发布版本也会发生这种情况 在另一台电脑上尝试过 结果相同 甚至尝试创建一个新的
  • 带有两种不同颜色文本的 UILabel

    我想在 a 中显示这样的字符串UILabel 有 5 个结果 其中数字 5 为红色 其余字符串为黑色 我怎样才能在代码中做到这一点 这样做的方法是使用NSAttributedString像这样 NSMutableAttributedStri
  • Python Beautiful Soup 如何将 JSON 解码为“dict”?

    我是 Python 中 BeautifulSoup 的新手 我正在尝试提取dict来自美丽汤 我使用 BeautifulSoup 提取 JSON 并得到beautifulsoup beautifulsoup多变的soup 我试图从中获取价值
  • 使用c#枚举远程系统上的Windows用户组成员

    在 c 中 我需要能够 连接到远程系统 根据需要指定用户名 密码 列出该系统上本地组的成员 将结果取回执行计算机 例如 我将使用适当的凭据连接到 SOMESYSTEM 并取回本地管理员列表 包括 SOMESYSTEM Administrat
  • 在Azure Active Directory中,有用户禁用选项吗?

    如何禁用 Windows Active Directory 中的用户 我们使用的是 Microsoft Azure 要禁用用户 您可以使用图形 API 为此 请使用 PATCH HTTP 方法对用户调用更新 PATCH https grap
  • 加载字体后调用 jQuery 函数。

    我的网站中有多种字体 它加载速度非常慢 我有一些 jquery 功能 我需要在加载字体时加载它们 我尝试过调用它 jQuery window load function my function 不工作怎么办 一个问题是Google 字体加载
  • 如何在 jquery ui 模式对话框小部件内部动态加载外部 url 的内容?

    我之前问过这个问题 但我认为我没有正确解释我想要完成的任务 我的网站上有多个链接 我想在 jquery ui 模式对话框小部件中打开链接中的内容 我试图使用 this 来引用用户动态选择的链接 我在这里做错了什么 我正在使用的代码如下 a
  • 一个 Windows 服务中的多个服务进程 (System.ServiceProcess.ServiceBase)

    我有两个服务进程 源自System ServiceProcess ServiceBase MyService1 and MyService2 我正在尝试在Main Windows 服务的Programm cs static void Mai
  • iOS 有谁知道如何向 NSURLRequest 添加代理吗?

    我正在设置一个网络视图 但我需要使用代理加载网络视图的内容 你们中有人知道我如何在 NSURLRequest 中实现代理吗 例如 NSString location http google com NSURL url NSURL URLWi