2016-11-05 5 views
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は正常に動作します。

アドバイスありがとうございます。

+0

@EricAya質問に忘れてしまいました。更新しました。私はそれが私のプロジェクトコードで書かれている。 –

+0

それから間違ったことはありません。それ以外の場合は、 'let params:[String:Any] ='のようにparamsの型を宣言してみてください。 – Moritz

+0

'.prettyPrinted'を' [] 'に置き換えてみてください。一部のサーバでは、httpBodyにかなりのJSONがあるのが好きではありません。 – Moritz

答えて

0

リクエストがJSON呼び出しとして認識されないという問題があります。 URLRequestを作成した後、次の課題を記入してください。

関連する問題