2017-08-24 68 views
1

我试图用字典发送post请求,它的一个值是base64字符串。所以,我有参数字典如下:用alomofire发送base 64字符串

失败: responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误 域

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

当我发送一个请求,我在控制台得到以下= NSCocoaErrorDomain代码= 3840 “围绕字符 无效值0” 的UserInfo = {NSDebugDescription =无效值周围字符0}))

我的base64字符串是正确的(尽管很多符号),但是我在线检查它并从输出中获取图像。

为什么我得到这样的错误?

+1

错误提到“响应”。服务器可能会向您发送除JSON之外的其他内容。你能打印答复作为原始数据还是字符串? – Mats

+0

@Ahmad F问题解决了。谢谢。 –

+0

@EvgeniyKleban很乐意帮忙!我所做的只是编辑答案:) –

回答

1

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

希望这个代码将帮助您: -

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

感谢您的帮助,工作 –

1

这是我一直在使用,以使您的参数的简单解释表示什么为了向Alamofire发出POST请求。

您可以在模型类使用:

var dictionaryRepresentation: [String: Any] { 

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

可以删除自己,如果你在你的模型类,它只是一个更好的了解。

然后当你想使你的POST请求,你可以这样调用它:

如前所示想象一下,你有一类用户,属性名,标题,头像和年龄。

而你想发送你的对象用户到你的后端。

这里是如何您可以把您的参数为代表的词典:

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

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

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

相关问题