【发布时间】:2018-12-06 01:55:59
【问题描述】:
我正在使用 Alamofire 和 SwiftyJSON 来发布 HTTP 请求。应用程序中的一个选项允许用户选择一个产品和一个相关的变量选项。我正在使用JSONSerialization 对 JSON 响应进行编码并将其与请求一起发回。
在 Postman 上进行测试时,我得到了肯定的结果,而在应用程序中它返回了错误的结果。我一直在努力寻找解决方案,但一无所获。
发布请求的代码:
var optionDictionary = [String:AnyObject]()
var requstParams = [String:String]();
requstParams["product_id"] = self.productId
requstParams["quantity"] = self.quantityValue.text
do {
let jsonSortData = try JSONSerialization.data(withJSONObject: self.optionDictionary, options: [])
let jsonSortString = String(data: jsonSortData, encoding: .utf8)!
requstParams["option"] = jsonSortString
}
catch {
print(error.localizedDescription)
}
NetworkManager.sharedInstance.callingHttpRequest(params:requstParams, apiname:"api/addtoCart", cuurentView: self, method: .post, encoding: JSONEncoding.default){success,responseObject in
if success == 1{
let dict = responseObject as! NSDictionary;
NetworkManager.sharedInstance.dismissLoader()
self.view.isUserInteractionEnabled = true
if dict.object(forKey: "success") as! Int == 1{
let data = dict.object(forKey: "total") as! String
self.tabBarController!.tabBar.items?[3].badgeValue = data.components(separatedBy: " ")[0]
self.navigationCart(cartCount:data.components(separatedBy: " ")[0])
if self.goToBagFlag == true{
self.tabBarController!.selectedIndex = 3
}
}
}
}
Xcode 调试器展示
网址https://www.example.com/api/addtoCart
参数 ["product_id": "23490", "quantity": "1", "option": "{\"2008\":\"7404\"}"]
成功 returnData {"success":false,"error":{"option":{"2008":"Option is required!"}}}
当我在 Postman 中使用以下值时
{
"quantity": "1",
"product_id": "23490",
"option": {"2008":7403}
}
我得到一个成功的 return = true。
我很困惑我做错了什么?
【问题讨论】:
-
发出 post 请求时您应该检查的另一件事是发送 API 想要的内容。 API 真的需要数字项的字符串吗?
-
哦!我现在看到了...调试器中的 7404 值是一个字符串。那么你成功地做的是一个 Int。
标签: ios swift alamofire swifty-json nsjsonserialization