[英]Local networking using URLSession - Swift 4.2, Xcode 10.1
我正在嘗試通過本地網絡向IP地址發出HTTP請求。 但是,當我調用dataTask時,它實際上並沒有發出請求。 對互聯網的請求工作正常。 我還嘗試了從HTTPBot發出請求,該請求成功。
這是進行呼叫的代碼:
let url = apiBaseUrl + "get_serial"
let urlObj = URL(string: url)
var urlRequest = URLRequest(url: urlObj!)
urlRequest.httpMethod = "GET"
urlRequest.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
URLSession.shared.dataTask(with: urlObj!) { (data, response, error) in
guard let data = data else { return }
let serial = (String(data: data, encoding: .utf8))
onSuccess(serial ?? "")
}
網址已正確定義為http://192.168.0.50/get_serial
我試圖逐步解決它,但是在命中URLSession.shared.dataTask之后,它什么也沒做。 我懷疑存在線程問題,並嘗試添加延遲,以及嘗試從全局線程分派dataTask,但均無濟於事。 我還嘗試允許在.plist文件中進行任意加載,並將該IP添加為異常域:
我不確定我缺少什么。
根據Apple文檔 :
創建任務后,必須通過調用它的resume()方法來啟動它。
因此,您必須保留URLSession.shared.dataTask
實例,並使用resume
方法啟動它。 類似於以下內容。
let url = apiBaseUrl + "get_serial"
let urlObj = URL(string: url)
var urlRequest = URLRequest(url: urlObj!)
urlRequest.httpMethod = "GET"
urlRequest.cachePolicy = URLRequest.CachePolicy.reloadIgnoringCacheData
let task = URLSession.shared.dataTask(with: urlObj!) { (data, response, error) in
guard let data = data else { return }
let serial = (String(data: data, encoding: .utf8))
onSuccess(serial ?? "")
}
task.resume()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.