Alamofire POST скачать PDF - PullRequest
       17

Alamofire POST скачать PDF

0 голосов
/ 02 января 2019

Я пытался с 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
...