我在localhost上连接到我的服务器以获取一些数据。返回此请求的数据是JSON,在 Postman 上正确显示JSON,但是当我在玩iOS时,Alamofire会给我一个错误:
responseSerializationFailed(Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(错误 Domain = NSCocoaErrorDomain Code = 3840" Garbage at end。" UserInfo = {NSDebugDescription =结尾处的垃圾。}))
有问题的JSON是:
UIViewController
我不明白的是,如果我强制我的服务器以字符串的形式返回json,那么像
if let customerTokenData = UserDefaults.standard.data(forKey: "myToken") {
let customerToken = NSKeyedUnarchiver.unarchiveObject(with: customerTokenData) as! BUYCustomerToken
print(customerToken)
} else {
print("No token stored. Launch again to see token.")
let customerToken = BUYCustomerToken(customerID: 999, accessToken: "some token", expiry: Date())
let tokenData = NSKeyedArchiver.archivedData(withRootObject: customerToken)
UserDefaults.standard.set(tokenData, forKey: "myToken")
}
Alamofire不会抱怨并正确解析它。那个怎么样?我认为指定参数{
"name": "TestName",
"surname": "TestSurname"
}
它会反过来。
"{"name": "TestName after update","surname": "TestSurname"}"
答案 0 :(得分:1)
这意味着您的API响应字符串不是正确的JSON。 确保您的响应是有效的JSON。在我的情况下(如下所示),JSON String包含一些破坏JSON的HTML字符。
如果您使用的是Alamofire,请将.responseJSON更改为.responseString并确认响应结构为有效JSON。
注意:如果您使用的是Postman,您可能不会注意到JSON响应中多余的多余字符。您需要将响应类型从“漂亮”更改为“原始”才能观察到这一点。
答案 1 :(得分:0)
我认为你需要获取数据,所以你应该像这样编写我不确定
Alamofire.request("http://192.168.1.4:8080/user/abcdf",method:.get).responseJSON {
response in
if response.result.isSuccess {
//do stuff
}
else {
// do other stuff
}
}