我有一个旧的代码库,我试图迁移出来。网络电话目前使用的是Alamofire 4.0,我尝试使用URLSession
。我无法弄清楚出了什么问题,这就是我一直在做的事情。我从我要发布的路线和参数开始:
// route to user creation
let url = ...
let params = ["user": ["first_name": "John", "last_name": "Appleseed", "email": "john@apple.com", "password": "asdfgh"]]
以下是新旧网络电话:
// old network request
Alamofire.request(url, method: .post, parameters: newUser, encoding: JSONEncoding.default).responseJSON { response in
// ...
}
// new code
var request = URLRequest(url: url)
let jsonData = try! JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
request.httpBody = jsonData
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else { return print("error=\(error)") }
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("status code should be 200, but is \(httpStatus.statusCode)")
print("response = \(response)")
}
let responseString = String(data: data, encoding: .utf8)
print("responseString = \(responseString)")
}
task.resume()
出于某种原因,我在URLSession
尝试中获得了400的状态代码。 Alamofire工作正常。
任何建议表示赞赏。
答案 0 :(得分:0)
问题是请求未被识别为JSON调用。创建URLRequest
:
request.allHTTPHeaderFields = ["Content-Type": "application/json"]