【发布时间】:2018-02-09 19:22:40
【问题描述】:
func DoLogin(_ email:String, _ password:String)
{
struct User: Decodable {
let sfname: String
let slname: String
let email: String
let sid: Int
}
let url = URL(string: "http://URL")!
var request = URLRequest(url: url)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
let postString = "email=" + email + "&password=" + password + ""
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { // check for fundamental networking error
print(error!)
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors
print("statusCode should be 200, but is \(httpStatus.statusCode)")
print(response!)
}
if let responseString = String(data: data, encoding: .utf8){
let myStruct = try JSONDecoder().decode(User.self, from: responseString)
}
}
task.resume()
}
所以目的是解码 HTTP 响应 responseString 以便将信息保存到 User 的属性中,但是在插入代码行以解码 HTTP 后,我不断弹出相同的错误回复(myStruct)。我觉得这与 Do Try Catch 错误处理有关,但无法弄清楚。
提前感谢您的帮助:)
【问题讨论】:
标签: json swift httprequest