Аламофир не работает - PullRequest
0 голосов
/ 28 мая 2018

Я написал программу ios, которая использовала Almofire для REST, для части приложения мне нужно отправить POST-запрос на сервер и получить JSON, Alamofire правильно отправить запрос и ответ сервера на приложение, но Almofire делаетне показывать ответ, фактически в приведенном ниже коде, компилятор никогда не запускает «print (Result)», даже ответ сервера правильно, почему?(в коде комментарии не на английском!)

  Alamofire.request(urlString, method:HTTPMethod.post , parameters:    parameters, encoding: JSONEncoding.default, headers:headers).responseJSON
  { Result in

            // (responseData) -> Void in
                print(Result)
                if((Result.result.value) != nil)
                {
                    //data ra be value tabdil mikonad
                    let ResValue = JSON(Result.result.value!)
                    print(ResValue)

                    //check mikone ke aya key be name access_token vojod dare ya na
                    if   ( ResValue["error"].exists() )
                    {
                        //agar token expire shode bud
                        if (ResValue["error"] == "Authorization Required")
                        {

                            let pass = keychain.get("password")
                            //initial kardan class marbut be function get token
                            let get = LoginAndRegistration()

                            //estefade az function get token
                            get.getToken(userName:userName,passWord:pass!)
                            { results in
                                //agar gereftan token taiid shod
                                if results == "token got!"
                                {
                                    //gereftan data
 Alamofire.request(urlString,method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: ["content-Type":"application/json","Authorization":"JWT \(token)"]).responseJSON
                                        { response in

                                            //agar data vojod dasht
                                            if((response.result.value) != nil)
                                            {
                                                //data ra be value tabdil mikonad
                                                let responseValue = JSON(response.result.value!)
                                                //enteghal  data be dakhel tabe khanandeh
                                                //self.hairdressShow(json: responseValue)
                                                DataRe(responseValue)
                                            }

                                    }

                                }
                                    //agar token jadid ham daryaft nashod
                                else
                                {
                                    //seque be login page

                                    //DataRe((["test"] as AnyObject) as! Array<Any>,1,1)

                                    // DataRe(["message":"seque"])
                                }
                            }
                        }

                    }

                    //agar value "Data" vojod dasht, yani hamechi ok !
                    if ( ResValue["Data"].exists() )
                    {

                        //self.hairdressShow(json: ResValue)
                        DataRe(ResValue)


                    }

                    else
                    {

                        //  DataRe(["message":"Something's Wrong"])

                    }

                }
            }.resume()

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Попробуйте:

Alamofire.request(urlString, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers).responseJSON { response in
   print("Request: \(String(describing: response.request))")// original url request
   print("Response: \(String(describing: response.response))")// http url response
   print("Result: \(response.result)")// response serialization result

   if let json = response.result.value {
       print("JSON: \(json)") // serialized json response
   }
}

Вот документация: https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-methods

0 голосов
/ 28 мая 2018

Вы пытались использовать «результат» вместо «результат»?Я думаю, что Alamofire использует enum Result, а не переменную, которую вы хотите, поэтому он окрашен как класс.Я не знаю, решит ли это вашу проблему, но вы можете попробовать.

Переменные всегда в нижнем регистре.

...