Я пытался с NSURLSession безуспешно: Как скачать PDF, использовать NSURLSession POST с заголовками и параметрами тела?
, Так что я попробовал с Alamofire, но всегда терпел неудачу. Вот мой код:
func callAPIMoneyReport() {
let param = HTTPBody.moneyReportBody(contactId: contactIdentifier!)
print("param: \(String(describing: param))")
let url = NSURL(string:Constant.getAPIMONEYReport())
print("MONEY REPORT URL:\(String(describing: url!))")
Alamofire.request(Constant.getAPIMONEYReport(), method: .post, parameters: param, encoding: JSONEncoding.default, headers: ConnectionManager.sharedIns.getHTTPHeadersRefreshToken())
.responseObject{ (response: DataResponse<MainResponse>) in
switch(response.result) {
case .success(_):
print("MONEY report success")
if response.result.value != nil {
self.moneyReportModel = response.result.value
let status = self.moneyReportModel?.status
let statusCode = response.response?.statusCode
print("statusCode:\(String(describing: statusCode))")
if(statusCode == 200){
}else{
AlertViewUtil.sharedIns.showAlertFeedback(self, messageText: status!, actionButton1: Wordings.BTN_CLOSE, actionButton2: "")
}
}
break
case .failure(_):
print("MONEY report failure")
break
}
}
}
Обновление:
Попробуйте с этим кодом, но вы не можете скачать PDF:
Alamofire.request(Constant.getAPIMONEYReport(), method: .post, parameters: param, encoding: JSONEncoding.default, headers: ConnectionManager.sharedIns.getHTTPHeadersRefreshToken())
.responseData { response in
print("request:\(request)")
print("response:\(response.data!)")
}
Обновление попробуйте также с этим кодом, но не можете найти pdf:
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0];
let fileURL = documentsURL.appendingPathComponent("family-money.pdf")
return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
}
Alamofire.download(Constant.getAPIMONEYReport(), method: .post, parameters: param, encoding: JSONEncoding.default, headers: ConnectionManager.sharedIns.getHTTPHeadersRefreshToken(), to: destination)
.response { result in
self.dismissProgressDialog()
if let error = result.error {
print("MONEY report failure")
} else {
print("MONEY report success")
let vc = UIDocumentInteractionController(url: result.destinationURL!)
vc.delegate = self
vc.presentPreview(animated: true)
}
}
Какой правильный код для получения PDF?
Обновление получилось, потому что забудьте поставить этот код:
vc.name = result.destinationURL!.lastPathComponent