我正在使用Alamofire 4.0,在进行网络通话时,我在应用程序审查期间遇到错误,因此我的应用程序被拒绝了。但是对于我和我的客户来说,一切正常,我们永远都不会犯错
JSON由于错误而无法序列化: 无法读取数据,因为数据格式不正确。
我们还检查了服务调用是否未打到服务器(因此没有得到他们的帮助),请找到代码段
manager.request(requestURL, method: .post, parameters: param as? Parameters, encoding: URLEncoding.methodDependent, headers: nil).responseJSON { (responseJson) in
})
通过放置各种类型的参数(例如特殊字符,nil等),我们无法从我们的角度重现错误。但是在应用审查期间,我们遇到此错误。请帮帮我!
答案 0 :(得分:0)
var params = [String:Any]()
params["stripeToken"] = self.stripeToken
params["currency"] = "gbp"
Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default, headers: ["Content-Type":"application/json"]).responseJSON { (response) in
switch response.result {
case .success:
print("it's success")
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")
}// end of switch
} //end of Alamofire
答案 1 :(得分:0)
如果您收到类似这样的响应,请首先尝试在日志中打印:
Alamofire.request(url, method: .post, parameters: parameter).responseJSON { (response) in
//For Network Error
guard response.result.error == nil else {
print(response.result.error!)
return
}
if let value = response.result.value {
let json = JSON(value)
print("myJSON are: \(json)"
}
}
如果确实有任何错误,则告诉服务器团队进行检查。还要在 plist 中检查应用传输安全性。
答案 2 :(得分:0)
有类似的问题。原来,这是我的PHP脚本接收数据并发送回错误的序列化JSON数据。有一个“ echo”语句可能已损坏序列化的数据。检查服务器端代码,而不是检查错误,而是检查echo语句或其他应注释掉的输出。