2015-10-09 19 views
2

我用這個alamofire要求得到一個PDF文件,我想將其保存爲NSData的:Alamofire獲得PDF作爲NSData的

func makeDataCall(urlString: String, completionHandler: (responseObject: NSData?, error: NSError?) ->()) { 
    //Perform request 
    Alamofire.request(.GET, urlString, headers: ["Authorization": auth]) 
     .responseData { request, response, responseData in 
      print(request) 
      print(response) 
      print(responseData) 
      completionHandler(responseObject: responseData.data, error: nil) 
    } 
} 

在響應我得到這個:

"Content-Length" = 592783; 
"Content-Type" = "application/pdf"; 

然而responseData.data是零。

我在做什麼錯了?

+0

哪個Alamofire的版本您使用的? – Moritz

+0

最新版本,適用於swift 2.0 –

+0

[在他們的頁面上](https://github.com/Alamofire/Alamofire#response-data-handler)與您的語法不同,所以我想也許您沒有使用最新版本版。 – Moritz

回答

5

編輯我以前的回覆,我太快讀了你的問題。

要下載文件就像一個PDF格式,你應該使用Alamofire.download而不是要求

有一個在文檔上一節: https://github.com/Alamofire/Alamofire#downloading-a-file

只是檢查來自互聯網一些隨機的PDF格式,這對我的作品只是罰款:

let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory, domain: .UserDomainMask) 
Alamofire.download(.GET, "http://box2d.org/manual.pdf", destination: destination) 
    .response { _, _, _, error in 
    if let error = error { 
    print("Failed with error: \(error)") 
    } else { 
    print("Downloaded file successfully") 
    } 
} 
+0

在Alamofire 4.4中,Swift 3.1現在是:'let destination = DownloadRequest.suggestedDownloadDestination(for:.documentDirectory,in:.userDomainMask)'和'Alamofire.download(「http://box2d.org/manual.pdf」 ,到:目的地)'。另外,如果我正確理解它,現在看起來響應閉包只包含一個參數:'response'(它具有'response.error'作爲字段)。 –