我正在攻击REST API
,您可以拨打电话然后接收图片或pdf。我正在使用URLSession.shared.dataTask
拨打电话,当有图像时,呼叫成功(但需要很长时间,超过5秒),我可以在UIImageView
中显示图像。但是当有pdf时,我不知道如何处理结果。 API将image / pdf作为“文件流”返回。
当我将数据打印到控制台时,它打印的大小(字节)和它与服务器中的大小相同,所以在某种程度上我有正确的数据,我只是不知道如何查看pdf
我使用的是swift 3,iOS 10,xcode 8。
答案 0 :(得分:0)
首先,您可能想将您的问题分成两部分。请编辑它并再次询问第二部分。
本主题分为两部分
<强> 1。下载PDF并将其保存在文件系统
<强> 2。获取保存在文件系统中的pdf并使用UIWebView
或UIDocumentInteractionController
所以,我会解释第一个。
如果您使用REST HTTP客户端,则可以完成第一个:Alamofire : Elegant HTTP Networking in Swift。所以不需要使用URLSession
这样的情况,如果你这样做,你将不得不写这么多行。它简单易行。所以,我希望你尝试一下。如果您需要URLSession
,请发表评论。
那么如何使用Alamofire
下载pdf:
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//.documentDirectory means it will store in Application Document Folder
let fileURL = documentsURL.appendPathComponent("data.pdf")
return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
}
Alamofire.download(urlString, to: destination).response { response in
print(response)
if response.error == nil, let filePath = response.destinationURL?.path {
// do anything you want with filePath here.
// Here what you have to do Step 2. (Read the file that you downloaded)
}
}
此下载程序不包括请求带编码参数的下载链接。这只是简单的方法。