如何使用 Alamofire 从服务器获取图像(不是 url 或 NSData)

Posted

技术标签:

【中文标题】如何使用 Alamofire 从服务器获取图像(不是 url 或 NSData)【英文标题】:How to get Image (not url or NSData )from server using Alamofire 【发布时间】:2017-07-19 13:56:08 【问题描述】:

我正在尝试使用 Alamofire 从服务器获取图像。它在邮递员参考:附件中工作

以下是我的参考代码:

let headers = ["Authorization" : APITOKEN,"Content_Type" : CONTENT_TYPEVAL]


Alamofire.request(urlString!,  method: .get, parameters: nil, encoding: URLEncoding.default, headers:headers ).responseJSON  (response) in
switch response.result 
case .success(let origObject):
    debugPrint(origObject)

    if let object = origObject as? Dictionary<String,AnyObject>
    


    

    completion(.failure(Ya3ClientError.serverUnknownError))

case .failure(let e):
    debugPrint("error:\(e.localizedDescription)")



收到错误“JSON 由于错误而无法序列化:\n无法读取数据,因为它的格式不正确。”

任何帮助如何解决这个问题。

【问题讨论】:

您在请求中调用responseJSON,这意味着响应将被解释为 JSON。毫无意义,因为它是一个二进制文件。 【参考方案1】:

您可以尝试使用.responseData 来获取Data 对象并使用UIImage(data:) 创建图像,而不是使用.responseJson

看看this

【讨论】:

【参考方案2】:

您可以从 Data 对象创建一个 UIImage,该对象是从 Alamofire 的响应中获得的。但是,如果没有看到您的 JSON 响应,我无法提供确切的代码。如果响应仅包含图像作为其数据,那么您可以使用

Alamofire.request(.GET, "https://myUrl/myPicture.png").response  (request, response, data, error) in
    myImageView.image = UIImage(data: data)

您还可以查看Alamofire Image 库。

【讨论】:

以上是关于如何使用 Alamofire 从服务器获取图像(不是 url 或 NSData)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Alamofire Swift 4 将图像填充到 UICollectionView

使用 alamofire multipart 上传图像数组

使用 alamofire 下载图像 - iOS

如何使用操作查询发出多个 Alamofire 请求

使用消息“Alamofire.AFError.ResponseValidationFailureReason.unacceptableContentType”从存储中获取图像时出错

如何使用标头从服务器 Alamofire swift 获取数据