2017-08-24 34 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 
} 

我強烈建議你在抽象的共享服務類中的所有聯網的方法。

相關問題