【发布时间】:2019-02-20 09:28:22
【问题描述】:
我通过邮递员收到了 api 的回复
{
"status": "1",
"error": false,
"message": "Your order has been placed successfully"
}
我调用了 api 并传递了调用 api 所需的参数。代码给出错误“字符 1 周围的值无效”。
let urlsContainer = UrlsContainer()
let url = URL(string: urlsContainer.allotRunnerAPI)
let session = URLSession.shared
var request = URLRequest(url: url!)
let postString = "user_id=\(user_id)&pincode=\(pincode)&select_address=\(select_address)&store_id=\(store_id)"
request.httpMethod = "POST"
request.httpBody = postString.data(using: .utf8)
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let task = session.dataTask(with: request as URLRequest, completionHandler: { data, response, error in
guard error == nil else {
return
}
guard let data = data else {
return
}
代码应该执行do代码块
do {
let parsedData = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: AnyObject]
print(parsedData)
}
但现在由于代码中的一些问题,它正在执行 catch 代码块
catch let error {
print(error)
}
})
task.resume()
我无法在我的代码中找到问题来解决错误
【问题讨论】:
-
print(String(data:data, encoding:.utf8)!)。我猜响应不是 JSON。 -
@vadian 是的,打印 html 标签有什么解决方案吗?
-
您的语法(由 & 字符分隔的键值对)适用于 GET 请求。对于 POST 请求,您必须发送字典。
-
@vadian 好的,谢谢分享,其实我以前不知道,但还是有同样的问题
-
请仔细检查html标签的响应,你可能会找到错误的原因,还要检查你的服务api是否需要令牌,你可能忘记发送它,我遇到同样的问题,原因是忘记了发送令牌。
标签: ios swift api nsjsonserialization