我尝试用字典发送post请求,其中一个值是base64字符串。所以,我有如下参数:
let paramsDict : [String : Any] = [ "image" : self.avatarBase64String]
当我发送请求时,我在控制台中关注:
FAILURE: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误 Domain = NSCocoaErrorDomain Code = 3840"字符周围的值无效 0" UserInfo = {NSDebugDescription =字符0周围的值无效。}))
我的base64字符串是正确的(虽然很多符号),但我确实在线检查并从输出中获得了一个图像。
为什么我会出现这样的错误?
答案 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
}
我强烈建议您在共享服务类中抽象所有网络方法。