एक एपीआई अनुरोध के लिए मैं प्रॉक्सी का उपयोग कर एक URL सत्र स्थापित करने की कोशिश कर रहा हूं। परीक्षण उद्देश्यों के लिए मैं एक सार्वजनिक प्रॉक्सी और आईपी का जवाब देने वाले एपीआई का उपयोग कर रहा हूं।स्विफ्ट में प्रॉक्सी के साथ URLSession का उपयोग कैसे करें 3
func makeRequestViaUrlSessionProxy(_ url: String, completion: @escaping (_ result: String?) ->()) {
let request = URLRequest(url: URL(string: url)!)
let config = URLSessionConfiguration.default
config.requestCachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
config.connectionProxyDictionary = [AnyHashable: Any]()
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPEnable as String] = 1
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPProxy as String] = "142.54.173.19"
config.connectionProxyDictionary?[kCFNetworkProxiesHTTPPort as String] = 8888
let session = URLSession.init(configuration: config, delegate: nil, delegateQueue: OperationQueue.current)
let task = session.dataTask(with: request) {
(data: Data?, response: URLResponse?, error: Error?) in
if error != nil {
NSLog("Client-side error in request to \(url): \(error)")
completion(nil)
return
}
if data == nil {
NSLog("Data from request to \(url) is nil")
completion(nil)
return
}
let httpResponse = response as? HTTPURLResponse
if httpResponse?.statusCode != 200 {
NSLog("Server-side error in request to \(url): \(httpResponse)")
completion(nil)
return
}
let encodingName = response?.textEncodingName != nil ? response?.textEncodingName : "utf-8"
let encoding = CFStringConvertEncodingToNSStringEncoding(CFStringConvertIANACharSetNameToEncoding(encodingName as CFString!))
let stringData = String(data: data!, encoding: String.Encoding(rawValue: UInt(encoding)))
session.invalidateAndCancel()
completion(stringData)
}
task.resume()
}
द्वारा कहा जाता है:
override func viewDidLoad() {
super.viewDidLoad()
makeRequestViaUrlSessionProxy("https://api.ipify.org?format=json") { string in
print(string)
}
}
यह config
की तरह लगता है पूरी तरह से नजरअंदाज कर दिया है क्योंकि भले साथ प्रॉक्सी आईपी बना, उसका जवाब दिया आईपी हमेशा वास्तविक उपकरणों आईपी
किसी भी मदद अत्यधिक है की सराहना की।
संपादित करें: उपयोगकर्ता हैसन 83 द्वारा सुझाए गए अनुसार, "HTTPS कुंजी" लेना एक विकल्प नहीं है।
हैलो, 142.54.173.19 इस आईपी जो आईपी पते, रूटर या अन्य है दे सकता है। ? –