簡體   English   中英

使用URLSession的本地網絡-Swift 4.2,Xcode 10.1

[英]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添加為異常域: plist中

我不確定我缺少什么。

根據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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM