从UrL下载文本

时间:2018-04-27 17:00:11

标签: ios swift

所以我有一个url链接,其中包含一个文本文件,其中包含我要在我的应用中显示的内容。但是我很难将它下载到我的应用程序。我尝试抓取该位置文本的代码现在看起来像这样

   @objc func grabTextFile(){
        let messageURL = URL(string: urlString)
        let sharedSession = URLSession.shared
        let downloadTask: URLSessionDownloadTask = sharedSession.downloadTask(with: messageURL!,completionHandler: {
        (location: URL!, response: URLResponse!, error: NSError!) -> Void in
            var urlContents = ""
            do{
                urlContents = try String(contentsOf: location, encoding: String.Encoding.utf8)
            }catch {
                urlContents =  ""
            }
        print(urlContents)} as! (URL?, URLResponse?, Error?) -> Void)
        downloadTask.resume()
    }

消息网址是此链接

  

var urlString =" 18.218.88.192:8080 / ActiveHoneypotWeb / logfiles / 159.65.139.103-0-commands.txt"

出于某种原因,它每次都会崩溃。 任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您滥用!会导致很多问题。但问题的最终原因是18.218.88.192:8080/ActiveHoneypotWeb/logfiles/159.65.139.103-0-commands.txt不是有效的网址。没有计划。根据需要将http://https://添加到网址的开头。

以下是您的代码的编写方式。这会正确检查错误和零值。

@objc func grabTextFile(){
    if let messageURL = URL(string: urlString) {
        let sharedSession = URLSession.shared
        let downloadTask = sharedSession.downloadTask(with: messageURL) { (location, response, error) in
            var urlContents = ""
            if let location = location {
                do{
                    urlContents = try String(contentsOf: location, encoding: String.Encoding.utf8)
                }catch {
                    print("Couldn't load string from \(location)")
                }
            } else if let error = error {
                print("Unable to load data: \(error)")
            }
        }
        downloadTask.resume()
    } else {
        print("\(urlString) isn't a valid URL")
    }
}