私はコードをSwift 3にアップデートしましたが、Alamofire 4.0への移行に問題があります。私はAlamofire移行ガイドを使用して、必要な変更のほとんどを成功させましたが、イメージ・データの取得にはまだ問題があります。 (意図したとおりに働いていた)Alamofireリクエストで画像データを取得
古いスウィフト2/Alamofire 3コード:Alamofire 4 へのアップデートで
func beginGetImageRequest() {
if let imagePath = thumbPath {
request = Alamofire.request(.GET, imagePath).response(completionHandler: { (_, _, imageData, error) -> Void in
if error != nil {
NSLog("Error downloading thumbnail image: \(error)")
} else {
if let downloadedImage = UIImage(data: imageData!) {
self.imageView.image = downloadedImage
}
}
})
}
}
私の試み:
func beginGetImageRequest() {
if let imagePath = thumbPath {
request = Alamofire.request(imagePath, method: .get, parameters: [:], encoding: JSONEncoding.default)
.validate { request, response, imageData in
if let downloadedImage = UIImage(data: imageData!) {
self.imageView.image = downloadedImage
} else {
print(response)
print(imageData)
}
return .success
}
}
}
print(imageData)
出力Optional(306 bytes)
。画像は約40 kbでなければなりません。問題は、どのようにUIImageにデータを変換しているのかではなく、要求をどのように実装しているのかということです。あなたが本当にイメージをダウンロードするためAlamofireを使用したい場合はここで
がprint(response)
<NSHTTPURLResponse: 0x618000221660> { URL: http://209.126.98.238/cache/igames_thumb/images/games/53848027743af.jpeg } { status code: 400, headers {
Connection = close;
"Content-Encoding" = gzip;
"Content-Length" = 245;
2016-10-04 21:54:53.653480 EyeGames[74216:3416747] [] nw_connection_send_stats_report 21 Generated report:
Delegated: 0
Report reason: app data stall
TCP statistics report:
Time to DNS start: 0 ms
Time to DNS resolved: 0 ms
DNS resolved time: 0 ms
DNS answers cached: 0
Interface type: 1
Time to TCP start: 3 ms
Time to TCP establishment: 223 ms
Connection establishment: 220 ms
Flow duration: 11447 ms
Connected interface type: 1
Connected: 1
Traffic class: 0
Cellular fallback: 0
Cellular RRC connected: 0
Kernel reported stalls: 0
Kernel reported connection stalls: 0
Kernel reported read stalls: 0
Kernel reported write stalls:
"Content-Type" = "text/html; charset=iso-8859-1";
Date = "Tue, 04 Oct 2016 18:54:43 GMT";
Server = "Apache/2.2.22 (Debian)";
Vary = "Accept-Encoding";
} }
そして、何の応答が含まれているを呼び出す前に、URLのキャッシュを削除することができますか?あなたはそこから始める必要があります – Godfather
@Godfather応答からの出力を含めるために私の質問を編集 –
あなたは400エラーコードを取得しています。あなたのリクエストは不正です。エンコードをURLに変更してみてください – Godfather