ОБНОВЛЕНО Вопрос:
Сначала моя проблема была связана с назначением пользовательского 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