Почтальон отвечает 200, но мое приложение не [ОШИБКА 403] Swift - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь использовать свой сервер, используя локальный IP-адрес, и если я пытаюсь выполнить аутентификацию с помощью Postman, я получаю данные, но если я использую свое приложение, это не так. Я не знаю, что происходит?

API URL

API URL

ОТВЕТ

ОТВЕТ НА ПРИЛОЖЕНИЕ APP RESPONSE

, и я использую следующий URL в моем приложении:

"http://192.168.0.19: 81 / api / Auth / login / movil"

Вот как я делаю свой запрос

 func login(user: User, completionHandler: @escaping (UserP?)->Void){
        var userData: UserP! = nil
        AF.request(UserRouter.login(user: user)).responseJSON{ response in
            print(user.Username)
            print(user.Password)
            switch(response.result){
            case .success(let response):
                print(response)
                let dict = (response as? [String : Any])!
                if let json = dict["data"] as? [String: Any] {

                    if let jsonData = try? JSONSerialization.data(withJSONObject: json , options: .prettyPrinted)
                    {
                        do {
                            let jsonString = String(data: jsonData, encoding: String.Encoding.utf8)!
                            print(jsonString)
                            userData = try JSONDecoder().decode(UserP.self, from: jsonData)
                            print("Object Converted:")
                        } catch {
                            print("Parsing Failed: ", error.localizedDescription)
                        }
                    }
                }else{
                    print("Credenciales Incorrectas")
                }
                completionHandler(userData)

            case .failure(let error):
                print(error.localizedDescription)
                completionHandler(userData)
            }
        }
    }

ROUTER

 enum UserRouter : APIConfiguration {

     // MARK: -API Configuration
     case login(user: User)
     case create(user: User)
     case update(user: User)
     case getById(id: Int)
     case get
     case delete(id: Int)

     // MARK: -HTTP Methods
     var method: HTTPMethod {
         switch self {
         case .login, .create:
                 return .post
             case .update:
                 return .put
             case .delete:
                 return .delete
             case .get, .getById:
                 return .get
         }
     }

     // MARK: -API Endpoints
     var path: String {
         switch self {
             case .login:
                 return "Auth/login/movil"
             case .create:
                 return "/usuario"
             case .update:
                 return "/usuario"
             case .delete:
                 return "/usuario"
             case .get:
                 return "/usuario"
             case .getById(let id):
                 return "/usuario/\(id)"
         }
     }

     // MARK: -Parameters
     var parameters: RequestParams {
         switch self {
             case .login(let user):
                 return .body(["usuario": user.Name, "password": user.Password])
             case .create(let user):
                 return .body(["user": user])
             case .update(let user):
                 return .body(["user": user])
             case .delete(let id):
                 return .body(["id": id])
             case .get:
                 return .body([:])
             case .getById:
                 return .body([:])
         }
     }

     // MARK: URLRequest
     func asURLRequest() throws -> URLRequest {
         let url = try Constants.Production.apiURL.asURL()

         var urlRequest = URLRequest(url: url.appendingPathComponent(path))

         urlRequest.httpMethod = method.rawValue

         urlRequest.setValue(ContentType.json.rawValue, forHTTPHeaderField: HTTPHeadersField.acceptType.rawValue)
         urlRequest.setValue(ContentType.json.rawValue, forHTTPHeaderField: HTTPHeadersField.contentType.rawValue)
         urlRequest.setValue(Constants.Production.authenticationToken, forHTTPHeaderField: HTTPHeadersField.authentication.rawValue)

         switch parameters {
             case .body(let parameters):
                 urlRequest.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: [])
             case .url(let parameters):
                 let queryParameters = parameters.map { pair in
                     return URLQueryItem(name: pair.key, value: "\(pair.value)")
                 }
                 var components = URLComponents(string: url.appendingPathComponent(path).absoluteString)
                 components?.queryItems = queryParameters
                 urlRequest.url = components?.url
         }

         return urlRequest
     }
 }

Спасибо так много!

1 Ответ

0 голосов
/ 29 апреля 2020

Я ИЗМЕНЕН user.Name до user.Username

ОШИБКА

 var parameters: RequestParams {
         switch self {
             case .login(let user):
                 return .body(["usuario": user.Name, "password": user.Password])
         }
     }

ИСПРАВЛЕНО

 var parameters: RequestParams {
         switch self {
             case .login(let user):
                 return .body(["usuario": user.Username, "password": user.Password])
         }
     }
...