gpt4 book ai didi

ios - 如何使用 Swift 5 的代理配置连接到 HTTP 服务器(为什么忽略 connectionProxyDictionary)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:00 30 4
gpt4 key购买 nike

我需要连接到 HTTP 代理后面的网络服务器。我试过将 URLSessionConfigurationconnectionProxyDictionary 一起使用,但似乎我的代理配置被忽略了,因为您可以将代理主机值更改为任何值,结果是相同的。

我曾尝试使用 Charles Proxy 代替我需要连接的代理来调试这种情况,但发现请求从未到达它,所以我相信我的服务器有问题客户端代码。

import Foundation

class URLSessionProxy: NSObject, URLSessionDelegate {

func doRequest() {

let configuration = URLSessionConfiguration.default
configuration.connectionProxyDictionary = [
kCFNetworkProxiesHTTPEnable: true,
kCFNetworkProxiesHTTPProxy: "localhost",
kCFNetworkProxiesHTTPPort: "8888",
]

var request = URLRequest(url: URL(string: "https://ip.seeip.org/jsonip")!)
request.addValue("application/json", forHTTPHeaderField: "Accept")

URLSession(configuration: configuration, delegate: self, delegateQueue: OperationQueue.main)
.dataTask(with: request, completionHandler: { (data, response, error) in
if error == nil {
print("url request = ", request.url?.absoluteString)
print("headers request = ", request.allHTTPHeaderFields.debugDescription)
print("response = ", response)
print("data body = ", String(data: data!, encoding: String.Encoding.utf8.self))

} else {
print("error = ", error)
print(error?.localizedDescription)
}
}).resume()
}
}

URLSessionProxy().doRequest()

在给出的示例中,我希望使用我在 localhost:8888 上设置的代理间接连接到 ip.seeip.org。

要点:https://gist.github.com/brunabaudel/90a6873d2c3df6caeb89f8b7afc9adce

最佳答案

kCFNetworkProxiesHTTP 键仅控制用于 http URL 的代理。 https URL 使用由 kCFNetworkProxiesHTTPS 键定义的代理。

不幸的是,HTTPS key 在 iOS 上不可用(真的不知道为什么),但实现是存在的,因此您可以使用正确的 key 传递字符串,这些 key 是 "HTTPSEnable"“HTTPSProxy”“HTTPSPort”

关于ios - 如何使用 Swift 5 的代理配置连接到 HTTP 服务器(为什么忽略 connectionProxyDictionary)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57864130/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com