iOS 请求中,如果你想让 `URLSession` 忽略所有代理设置

在 iOS 请求中,如果你想让 URLSession 忽略所有代理设置,你可以通过配置 URLSessionConfigurationconnectionProxyDictionary 属性来实现,将其设置为一个空字典。

这类似于 OkHttp 中的 NO_PROXY 行为,它会告诉系统忽略任何全局或自动代理配置(例如在 Wi-Fi 设置中配置的代理)。

设置步骤

  1. 创建一个默认的 URLSessionConfiguration 实例。
  2. 将配置的 connectionProxyDictionary 属性设置为一个空的 [AnyHashable: Any] 字典。
  3. 用这个配置来创建一个 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 文件或手动代理设置)提供的代理信息。这是一种标准且可靠的方式,可以确保你的请求绕过所有代理,直接连接到目标服务器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值