在 iOS 请求中,如果你想让 URLSession 忽略所有代理设置,你可以通过配置 URLSessionConfiguration 的 connectionProxyDictionary 属性来实现,将其设置为一个空字典。
这类似于 OkHttp 中的 NO_PROXY 行为,它会告诉系统忽略任何全局或自动代理配置(例如在 Wi-Fi 设置中配置的代理)。
设置步骤
- 创建一个默认的
URLSessionConfiguration实例。 - 将配置的
connectionProxyDictionary属性设置为一个空的[AnyHashable: Any]字典。 - 用这个配置来创建一个
URLSession实例。
示例代码
下面是如何在 Swift 中实现这个逻辑:
import Foundation
// 1. 创建一个 URLSessionConfiguration,可以是 default、ephemeral 或 background
let configuration = URLSessionConfiguration.default
// 2. 将 connectionProxyDictionary 设置为空字典,告诉 URLSession 忽略所有代理
configuration.connectionProxyDictionary = [:]
// 3. 使用这个配置创建 URLSession 实例
let session = URLSession(configuration: configuration)
// 现在,你可以使用这个 session 来创建和执行你的请求了
let url = URL(string: "https://www.example.com")!
let task = session.dataTask(with: url) { data, response, error in
// 处理你的响应
if let error = error {
print("请求失败: \(error.localizedDescription)")
} else if let data = data {
print("请求成功,接收到数据: \(data.count) 字节")
}
}
task.resume()
为什么这样做可以?
connectionProxyDictionary 属性允许你为当前 URLSession 的连接显式地配置代理。当这个字典为空时,它会有效地覆盖并禁用任何由操作系统或网络配置(如 PAC 文件或手动代理设置)提供的代理信息。这是一种标准且可靠的方式,可以确保你的请求绕过所有代理,直接连接到目标服务器。

599

被折叠的 条评论
为什么被折叠?



