Назначение пользовательского ParameterEncoding для каждого контроллера представления для запроса Alamofire - PullRequest
0 голосов
/ 05 октября 2018

ОБНОВЛЕНО Вопрос:

Сначала моя проблема была связана с назначением пользовательского ParameterEncoding на ViewController на основе запроса HTTP.Method, я нашел решение и добавил строкув Alamofire.request затем добавляли import Alamofire в заголовок каждого ViewController, что помогало вызывать JSONEncoding и URLEncoding, и меняли способ вызова, добавляя заголовок к запросу, чтобы избежать несанкционированной ошибки 401.

func callingHttpRequest(params:Dictionary<String,Any>, apiname:String,cuurentView:UIViewController,method:HTTPMethod, taskCallback: @escaping (Int,
    AnyObject?) -> Void)  {

    let urlString  = HOST_NAME + apiname

    print("url",urlString)
    print("params", params)
    Alamofire.request(urlString,method: method,parameters:params).validate().responseJSON { response in
        switch response.result {
        case .success(let resultData):
            taskCallback(1,resultData as AnyObject)
            let returnData = String(data: response.data! , encoding: .utf8)
            print("returnData" ,returnData!)
            print("request URL", response.request!)
            break
        case .failure(let error):

             let returnData = String(data: response.data! , encoding: .utf8)
             print("returnData" ,returnData!)
            print("request URL", response.request!)

            if !Connectivity.isConnectedToInternet(){
                NetworkManager.sharedInstance.dismissLoader()
                cuurentView.view.isUserInteractionEnabled = true
                let AC = UIAlertController(title: "Warning", message: error.localizedDescription, preferredStyle: .alert)
                let okBtn = UIAlertAction(title: "Retry", style: .default, handler: {(_ action: UIAlertAction) -> Void in
                    taskCallback(2, "" as AnyObject)
                })
                let noBtn = UIAlertAction(title: "Cancel", style: .destructive, handler: {(_ action: UIAlertAction) -> Void in
                })
                AC.addAction(okBtn)
                AC.addAction(noBtn)
                cuurentView.present(AC, animated: true, completion: { _ in })
            }
            else{
                let errorCode:Int = error._code;
                if errorCode != -999 && errorCode != -1005{
                    NetworkManager.sharedInstance.dismissLoader()
                    cuurentView.view.isUserInteractionEnabled = true
                    let AC = UIAlertController(title: "Warning", message: error.localizedDescription, preferredStyle: .alert)
                    let okBtn = UIAlertAction(title: "Retry", style: .default, handler: {(_ action: UIAlertAction) -> Void in
                        taskCallback(2, "" as AnyObject)
                    })
                    let noBtn = UIAlertAction(title: "Cancel", style: .destructive, handler: {(_ action: UIAlertAction) -> Void in
                    })
                    AC.addAction(okBtn)
                    AC.addAction(noBtn)


                    cuurentView.present(AC, animated: true, completion: { _ in })
               }else if errorCode == -1005{
                   NetworkManager.sharedInstance.dismissLoader()
                   taskCallback(2, "" as AnyObject)
                }

            }
            break;

        }


    }

Теперь, что меня действительно бесит, так это ответ на запрос, приложение создано с помощью логина пользователя, поэтому при каждом запуске приложения оно будет проверять, вошел ли пользователь в систему или нет.Когда HTTP-запрос отправлен, ответ возвращается с добавлением SQL Query к JSON, если пользователь вошел в систему, как показано ниже

Ошибка returnData string (84) "SELECT * FROM customer, где LOWER (user) = 'helloworld 'AND status =' 1 '"{" success ": true," data ": [{,,,,,"}

Это вызывает ответ об ошибке и ошибку

Предупреждение: JSON не может быть сериализован из-за ошибки: данные не могут быть прочитаны, потому что они не в правильном формате.

Это действительно безумно, почему ответ возвращает ответSQL Query пока этого не должно быть. Этого не было до того, как я настроил заголовок и кодировку Alamofire.request.

Любой способ, с которым столкнулся с такой проблемой, может помочь, пожалуйста!

PS: Ответ имеет 200 HTTP-ответ OK, но с ошибкой Data Response

...