【发布时间】:2017-09-30 21:10:35
【问题描述】:
我正在尝试使用 Swift 中的发布请求从 Web 服务获取响应。但是我收到“无法读取数据,因为它的格式不正确”错误。以下是代码:
let dict = ["UserName": "2222211111",
"Password": "123456",
"AppName": "xyz"]
as [String: Any]
//create the session object
let session = URLSession.shared
let url = "someurl.svc/somefunction"
//now create the URLRequest object using the url object
var request = URLRequest(url: url)
request.httpMethod = "POST" //set http method as POST
do {
request.httpBody = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
} catch let error {
print(error.localizedDescription)
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
//create dataTask using the session object to send data to the server
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 {
//create json object from data
if let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [String: Any] {
print(json)
}
} catch let error {
print(error.localizedDescription)
}
})
task.resume()
我什至使用过 Alamofire、Networking 等第三方库。从这些库中我得到代码 3840,字符 3 周围的响应无效。 但是我使用 Objective-C 代码或使用 Postman Software 得到了正确的响应。 有人可以帮我吗? 谢谢
【问题讨论】:
-
你试过 alamofire 了吗?
-
您返回的响应可能不是有效的 JSON 格式。在尝试序列化之前尝试打印响应。这将是一个好的开始。
-
添加您收到的回复。 Postman 在自己的层面解决了很多问题,所以在 Postman 上工作的 api 不一定在 app 上工作。
-
除此问题外,请勿将漂亮打印数据发送到服务器。服务器不在乎美观。
-
我认为你弄错了有效的 Json 格式,所以需要从服务器端改进
标签: ios swift swift3 alamofire nsurlsession