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 添加代理吗? 的相关文章

  • iOS7及以上版本中如何在接收器和扬声器之间切换音频输出?

    我有一个音频播放器 可以选择在接近传感器通知 1 时将音频输出从扬声器切换到接收器 耳机 无论是否连接耳机 以下是我执行此操作的代码 void switchAudioOutput NSString output AVAudioSession
  • 从后台唤醒时应用程序会重新启动

    iOS 大师您好 我已经广泛搜索了答案 但找不到答案 我打赌对我的问题的第一个答复将是另一个类似的问题 但我找不到它 不管怎样 我的问题是我正在运行一个简单的地图应用程序 用户可以在地图上放置图钉 并在放置的图钉周围有一个自定义的圆圈覆盖
  • 如何使用 Unity 在 Android 设备上以各种宽高比显示游戏的相同部分?

    我从 Libgdx 引擎转向 Unity 是一名初级程序员 我尝试在 Unity 中为 Android 和 iOS 设备制作游戏 但在宽高比 分辨率缩放方面遇到问题 在 Libgdx 中 如果您开发了一些东西 您可以指定 默认 分辨率 并且
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • Swift 数组设置索引值不起作用

    我有一个方法 下面的内容 其中queue2只是一个 Int 我打印了很多东西 看看一切是否都正常 public func cool item Int println item println back queue2 insert item
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • iOS 外部附件框架:如何获取特定 MFI 设备的协议字符串

    我正在编写一个 iOS 应用程序 用于与 mini mPlay Drumi MP18B 小型蓝牙扬声器 进行通信 据我所知 showBluetoothAccessoryPickerWithNameFilter仅显示协议字符串添加到 Info
  • WebGL iOS 渲染为浮点纹理

    我正在尝试在 iOS Safari 上的 WebGL 中渲染浮点纹理 而不是在本机应用程序中 我已经设法让 iOS 读取手动 例如从 JavaScript 创建的浮点纹理 但是当我创建浮点类型的帧缓冲区并使用 GPU 渲染到其中时 它不起作
  • 更改 UITextField 辅助功能描述

    有没有办法将 UITextField 的辅助功能标签设置为 文本字段 之外的其他内容 因此 我不想将其称为 文本字段 而是将其命名为 代码验证字段 我的建议是不要试图在内置语音输出上智取系统 对于盲人用户来说 文本字段正在编辑 相当于 该项
  • spring - 强制 @Autowired 字段的 cglib 代理

    我有混合堆栈 EJB 和 Spring 为了将 Spring 自动装配到 EJB 我使用SpringBeanAutowiringInterceptor 不确定这是否会影响我遇到的问题 在尝试通过以下方式自动装配 bean 时 Scope p
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 如何在ios中以编程方式添加水平间距和垂直间距?

    我在 ios 8 中创建了一个应用程序 因为我有 4 个可垂直使用的标签 它应该在某些条件下更改位置 所以我已禁用自动布局并以编程方式设置约束 现在的问题是 我可以设置水平和垂直位置 宽度和高度的约束 但我找不到任何方法来添加标签之间的水平
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • 检测 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