用alomofire发送base 64字符串

时间:2017-08-24 11:27:25

标签: swift alamofire

我尝试用字典发送post请求,其中一个值是base64字符串。所以,我有如下参数:

let paramsDict : [String : Any] = [ "image" : self.avatarBase64String]

当我发送请求时,我在控制台中关注:

  

FAILURE:   responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误   Domain = NSCocoaErrorDomain Code = 3840"字符周围的值无效   0" UserInfo = {NSDebugDescription =字符0周围的值无效。}))

我的base64字符串是正确的(虽然很多符号),但我确实在线检查并从输出中获得了一个图像。

为什么我会出现这样的错误?

2 个答案:

答案 0 :(得分:1)

请检查您的网络连接。 然后将imageView转换为数据,然后转换为base64

希望此代码能为您提供帮助: -

 let pic  = UIImageJPEGRepresentation(cameraView.image, 0.5)
 let avatarBase64String = pic.base64EncodedString()

答案 1 :(得分:1)

以下是我一直在使用的内容,以便轻松地对您的参数进行字典表示,以便使用Alamofire发出POST请求。

您可以在模型类中使用它:

var dictionaryRepresentation: [String: Any] {

        return [
            "name" : self.name,
            "title" : self.title,
            "avatar" : self.avatar,
            "age" : self.age,
        ]
    }
  

如果您在模型类中,则可以删除self,这只是为了更好地理解。

然后,当您想要发出POST请求时,可以这样调用它:

想象一下,你有一个类User,其中包含属性名称,标题,头像和年龄。

并且您希望将对象User发送到您的后端。

以下是如何将参数作为字典表示的方式发送:

let user = User(name: name, title: title, avatar: avatar; age: age) 

CustomService.shared.post(parameters: user.dictionaryRepresentation) { response in
   // Handle response here
 }

我强烈建议您在共享服务类中抽象所有网络方法。