Arhn - архитектура программирования

Проверка статуса HTTP Swift4

Я немного запутался в учетных данных и HttpStatus.

Я делаю страницу входа в Swift 4/XCode9, которая подключается к API. Вот что я делаю, когда нажимаю кнопку входа:

   @IBAction func loginTapped(_ sender: Any) {

    let loginString = String(format: "%@:%@", usernametext.text!, passwordtext.text!)
    let loginData = loginString.data(using: String.Encoding.utf8)!
    let base64LoginString = loginData.base64EncodedString()
    var Base = base64LoginString

    let url = URL(string: "SOME URL")!
    var request = URLRequest(url: url)
    request.addValue("Basic \(Base)", forHTTPHeaderField: "Authorization")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        guard let data = data, error == nil else {
            print("\(error)")
            return
        }
        if let httpStatus = response as? HTTPURLResponse {
            print("status code = \(httpStatus.statusCode)")
        }
    }
    task.resume()
    view.endEditing(true)
}

Все работает нормально, но я не знаю, как проверить httpstatus. Если я получу неправильные учетные данные, я хочу остаться на странице входа и не выполнять переход к следующему представлению.

21.06.2018

Ответы:


1

Попробуйте этот код

func checkStatusCode(response:URLResponse?) -> Bool {
        guard let statusCode = (response as? HTTPURLResponse)?.statusCode else {
            print("Invalid Response")
            return false
        }

        if statusCode != 200 {
            print("Invalid File")            
            return false
        }
        return true
    }

Применение:

if (self.checkStatusCode(response: response)) { 
    DispatchQueue.main.async {
        self.performSegue(withIdentifier: "showW", sender: self)
    }      
} else {
 //added an alert 
}  
21.06.2018
  • Здравствуйте, я добавил это в данные защиты: `if (self.checkStatusCode(response: response) == false) { // добавил предупреждение } if (self.checkStatusCode(response: response) == true) { self .performSegue(withIdentifier: showW, sender: self) }` Когда я ввожу неправильный пароль, он работает, но когда я ввожу хороший, приложение становится очень медленным, появляется много вывода о потоках, и приложение почти падает, не так ли? сделать что-то не так? 21.06.2018
  • На самом деле мне не нужно было этого делать, мне нужно было только добавить DispatchQueue.main.async перед строкой self.performsegue, и это сработало, спасибо за помощь :) 21.06.2018
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..