一直在努力,但没有成功。我有一个函数转到UIButton
,仅用于对使用所有JSON的rails api执行alamofire调用。
我使用的是Swift 2,Alamofire 3,XCode 7&我的api的Rails 4部署到Heroku
当我关闭该功能时,我一直收到此错误:
alamofire.error Code = -6006" JSON无法序列化。输入数据为零或零长度。
这是我的代码:
@IBAction func Save(sender: AnyObject) {
let postsEndpoint: String = "https://APIURL"
let parameters = [
"users": [
"name": "James McHarty",
"avatar": "Some binary data",
"post": [
"title": "First Test Post",
"body": "This is the first test post for the API",
"liked": "8", //will make INT later
"img": "more binary data"
]
]
]
Alamofire.request(.POST, postsEndpoint, parameters: parameters, encoding: .JSON)
.responseJSON { response in
guard response.result.error == nil else {
// got an error in getting the data, need to handle it
print(response.result.error!)
return
}
}
print("func'd")
}
答案 0 :(得分:6)
这不是Alamofire
或swift错误,服务器返回的响应不是JSON格式。您可以打印出响应数据并检查其中的错误。
尝试使用此代码打印出我们的服务器数据,以便轻松识别错误并解决此问题。
Alamofire.request("Your url").responseJSON(completionHandler: { (response) in
switch response.result {
case .success(let value):
break
case .failure(let error):
print("\n\n===========Error===========")
print("Error Code: \(error._code)")
print("Error Messsage: \(error.localizedDescription)")
if let data = response.data, let str = String(data: data, encoding: String.Encoding.utf8){
print("Server Error: " + str)
}
debugPrint(error as Any)
print("===========================\n\n")
}
})
答案 1 :(得分:3)
服务器返回的响应不是JSON格式。您可以先使用该工具测试请求。
打印出错误代码不是HTTP错误代码,因为无法解析JSON
答案 2 :(得分:0)
您需要检查mimeType,它将为“ text / plain”而不是“ application / json”。这就是为什么JSONSerialization类无法解析数据的原因。