2017-01-18 4 views
1

私はAlamofireに取り組んでいると私はこのようなサーバにリクエストを投稿しようとしています:Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(500)

func sendRequest() { 

    print("fire now----------------------------------------------") 

    let parameters: Parameters = ["user": "001", "name": "josh"] 

    print(parameters) 
    let a = Alamofire.request("http://120.77.252.96:8388/", method: .get, parameters: parameters, encoding: URLEncoding.default).validate(statusCode: 200..<500).responseJSON(completionHandler: {responds in 
     switch responds.result { 
     case .success(let value): 
      let json = JSON(value) 
      print("JSON: \(json)") 
     case .failure(let error): 
      print(error) 
     }} 
    ) 
    print(a) 

} 

しかし、私は常にこのようなエラーを取得:

Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(500)

と私は、サーバー側をチェックするとき、それは身体と思われます要求の空が空です。
誰もがこれを手伝ってくれますか?本当にありがとう!

答えて

3

私は同じ問題に私の友人を持っていたと私は私はあなたに説明を与えることはできませんので、私はAlamofireに新たなんだ

validate(statusCode: 200..<600) 

validate(statusCode: 200..<500) 

からステータスコードを変更することによってそれを解決なぜ、どのように動作するのか、エラーが意味すること。

+0

私は問題がサーバであったことを知ったが、感謝の男! – JoshJoshJosh

0

シリルの受け入れ答えの説明:

HTTPサーバ機能は、従来のリクエストを処理している間に何が起こったかを示すステータスコードを返します。 Alamofireはこれを読み取って、応答が有効かどうか、またはエラーが発生したかどうかを判断できます。サーバがどのように実装されたかに応じて、Alamofireに「有効な」応答を意味すると考えられるステータスコードの範囲を伝えることができます。これを行うには、validate()機能にこの範囲を指定します。たとえば、.validate(statusCode: 200..<500)は、Alamofireにステータスコード200が499までの応答が有効であるとみなし、他のすべてのコード(500を含む)が無効であることを通知します。