我正在尝试通过本地网络向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 ?? "")
}
URL正确定义为http://192.168.0.50/get_serial
我试图逐步解决它,但是在到达URLSession.shared.dataTask之后,它什么也没做。我怀疑存在线程问题,并尝试添加延迟,以及尝试从全局线程分派dataTask,但均无济于事。我还尝试允许在.plist文件中进行任意加载,并将该IP添加为例外域:
我不确定我缺少什么。
答案 0 :(得分:1)
创建任务后,必须通过调用其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()