使用alamofire下载文件获取代码-1001

时间:2018-04-12 10:04:27

标签: ios swift download alamofire

从服务器下载.pdf文件时遇到问题。我从服务器获取了URL,我将下载文件,但该URL仍为empty文件。当移动设备点击该网址时,服务器将检查该文件是否可用。如果可用,它只需从我的服务器下载。如果不可用,我的服务器将从另一台服务器下载该文件,直到完成并保存到我的服务器,然后移动设备可以从我的服务器下载该文件。

如何等待Alamofire等待我的服务器完成下载?我总是得到代码-1001。这是我的代码

        let destination: DownloadRequest.DownloadFileDestination = { _, _ in
            let documentsURL:NSURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! as NSURL
            print("***documentURL: ",documentsURL)
            let PDF_name : String = "\(id).pdf"
            let fileURL = documentsURL.appendingPathComponent(PDF_name)
            print("***fileURL: ",fileURL ?? "")
            return (fileURL!,[.removePreviousFile, .createIntermediateDirectories])
        }

        let configuration = Alamofire.SessionManager.default
        configuration.session.configuration.timeoutIntervalForRequest = 200
        configuration.session.configuration.timeoutIntervalForResource = 200

        //let destination = DownloadRequest.suggestedDownloadDestination()
        let download = Alamofire.download(url, method: .get, parameters: [:], encoding: JSONEncoding.default, headers: authHeader, to: destination).downloadProgress(closure: { (prog) in
            let json: [String: Any] = ["file": "", "progress": prog.fractionCompleted]
            observer.onNext(JSON(json))
        }).response(completionHandler: { response in
            let status = response.response?.statusCode
            if status == 200 {
                if let url = response.destinationURL {
                    let json: [String: Any] = ["file": url.path, "progress": 100]

                    observer.onNext(JSON(json))
                    observer.onCompleted()
                }
            } else {
                observer.onError(NSError(domain:"", code:500, userInfo:["error": "Error Connection".localized()]))
            }
        })

谢谢大家

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题,我用Alamofire.download用downloadTask更改了URLSession。我不知道为什么,当使用Alamofire我总是得到代码-1001或RTO来下载文件但是当使用URLSession时,文件可以正常下载而无需RTO,为什么?与Alamofire.download

不同的URLSession.downloadTask?