2
私は古いコードベースを持っています。ネットワークは現在Alamofire 4.0を使用しており、代わりにURLSession
を使用しようとしています。私は何が間違っているのか把握するのに苦労しています、ここで私がやってきたことがあります。私は400のステータスコードを取得しています、いくつかの理由URLSessionへのAlamofireコールの翻訳
// 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()
:
// route to user creation
let url = ...
let params = ["user": ["first_name": "John", "last_name": "Appleseed", "email": "[email protected]", "password": "asdfgh"]]
ここでは、新旧のネットワーク呼び出しです:私は投稿したいルートとのparamsを始めます私のURLSession
試み。 Alamofireは正常に動作します。
アドバイスありがとうございます。
@EricAya質問に忘れてしまいました。更新しました。私はそれが私のプロジェクトコードで書かれている。 –
それから間違ったことはありません。それ以外の場合は、 'let params:[String:Any] ='のようにparamsの型を宣言してみてください。 – Moritz
'.prettyPrinted'を' [] 'に置き換えてみてください。一部のサーバでは、httpBodyにかなりのJSONがあるのが好きではありません。 – Moritz