ios - Alamofire 对 Base64 字符串的响应

标签 ios iphone alamofire nsurlsession alamofireimage

我正在使用 Alamofire 进行网络请求。除了一个问题外,它工作正常。

manager!.request(mutableURLRequest).responseJSON { (response) in
  switch response.result {
        case .Success:
            if let value = response.result.value {
                 print("JSON: \(value)") //**problem**
             }
        case .Failure(let error):
            print(error)
         }

}

服务器响应格式为:

"result" : [
    {
      "rec_name" : "1.jpg",
      "data": {
                "base64": "/9j/4AAQSkZ",
                "__class__": "bytes"
              },
      "id" : 9,
      "name" : "1.jpg"
    },
    {
      "rec_name" : "2.jpg",
      "data": {
                "base64": "/9j/4AAQSkZ",
                "__class__": "bytes"
              },
      "id" : 10,
      "name" : "2.jpg"
    }
  ],
  "id" : 0
}

但我得到如下信息:data(base64 String) is null

"result" : [
    {
      "rec_name" : "1.jpg",
      "data" : null,
      "id" : 9,
      "name" : "1.jpg"
    },
    {
      "rec_name" : "2.jpg",
      "data" : null,
      "id" : 10,
      "name" : "2.jpg"
    }
  ],
  "id" : 0
}

我是否漏掉了 base64 字符串? 我认为它在一个月前就可以工作,但现在我遇到了问题。

如果我通过 POSTMAN 发出相同的请求,那么它工作正常!

谢谢,

最佳答案

我可以给你图书馆建议SwiftyJSON .该库允许您轻松地在 Swift 中解析 JSON。另外,还有扩展AlamofireSwiftyJSON它结合了 Alamofire 和 SwiftyJSON。以下是您的请求的示例:

if let urlToTest = URL.init(string: "your_URL") {

    Alamofire.request(urlToTest,
                      method: .get,
                      parameters: nil,
                      encoding: JSONEncoding.default,
                      headers: nil)
    .responseSwiftyJSON(completionHandler: { (response:DataResponse<JSON>) in

        let jsonResult = response.result
        if let jsonResultValue = jsonResult.value {

            if let resultArray = jsonResultValue["result"].array {

                if resultArray.count > 0 {

                    if let itemData = resultArray[0]["data"].dictionary {

                        if let itemDataBase64 = itemData["base64"]?.string {

                            print("Base 64 field value \(itemDataBase64)")
                        }
                    }
                }
            }
        }
    })
}

关于ios - Alamofire 对 Base64 字符串的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46031074/

相关文章:

ios - UIColor 图案图像和色调颜色

javascript - 语音合成无法让手机safari变声

iPhone App Store 更新系统,以及对数据库的影响

json - SwiftyJson 无法设置值

swift - 如何在 Swift 中使网络请求更快

使用 GL_TEXTURE_2D 的 iOS YUV 420v 在 OpenGL 着色器中显示错误的颜色

ios - #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 100000 相当于 Swift

ios - 如何保护 ApplicationSupport 文件夹中的数据免受 iOS 中未经授权的访问?

iphone - UIAlertView 判断取消按钮是否被选中的简单方法

ios - Alamofire 4 URL请求参数编码为JSON