【问题标题】:Handling base64String as response in Swift在 Swift 中处理 base64String 作为响应
【发布时间】:2019-05-26 00:10:56
【问题描述】:
  • 我收到了一个 base64String 作为 Api 的响应,但是 无法通过Alamofire.request方法得到结果(试过 获取和发布)。

     Alamofire.request(ApiUrl, method: .get, parameters: [:] , encoding:JSONEncoding.default, headers:kAuthorizationHeader).responseString { (response) in
        switch response.result {
        case .success(let responseString):
            if let imageData = Data(base64Encoded: responseString),
                let image = UIImage(data: imageData) {
                print("image")
            }
        case .failure(let error):
            print("\(error.localizedDescription)")
        }
    }
    
  • 在 get 的情况下它总是返回一个失败并带有 'requestTimeOut' 方法和“字符 0 周围的值无效”用于发布。

    有什么方法可以获取base64String,以便我可以将其转换为UIImage?请指教。

【问题讨论】:

  • 你能分享一些代码sn-p吗?
  • 不是一个好主意。您应该与您的后端团队讨论发送 imageURL 而不是 base64String。
  • 由于安全原因/权限问题,我们无法从后端获取 url。还有什么其他可能的解决方案。如果有请分享
  • 出于安全目的,您应该像 AWS 那样使用 access_token 或签名。 base64String 可以通过在线工具轻松转换为可读形式。
  • bease64 是大数据,如果这是像图像这样的大数据,则不应在 API 中发送或接收。

标签: ios base64 alamofire alamofireimage


【解决方案1】:

我在我的 python 项目中创建了一个视图,它响应 url 中的字符串。所以使用 alamofire.. 你需要请求字符串而不是 responseJSON

Alamofire.request("http://127.0.0.1:8000/stringResponse/", method: .get).responseString { (response) in
         switch response.result {
        case .success(let responseString):
            if let imageData = Data(base64Encoded: responseString),
                let image = UIImage(data: imageData) {
                print("image")
            }
        case .failure(let error):
            print("\(error.localizedDescription)")
        }
    }

【讨论】:

  • 不适合我。仍然收到“请求超时”。错误
  • 用邮递员试一次。它是用邮递员还是任何其他API调用工具?
  • 其他 api 是否正常工作,还是所有 api 都出现超时错误?
  • 实际上这与 requestTimeOut 错误无关。这意味着数据量很大,并且设置的超时时间小于所需的时间。
  • 如果是这样,请您的后端开发人员发送图像源的 url 并将其与 sdwebimage 一起使用
猜你喜欢
  • 1970-01-01
  • 2014-11-15
  • 1970-01-01
  • 2020-12-02
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
相关资源
最近更新 更多