Как я могу проверить в Alamofire мой запрос отправлен? - PullRequest
0 голосов
/ 08 октября 2018

С помощью Alamofire можно получить событие при отправке запроса независимо от того, получен ответ или нет?Как и в случае с этим методом URLSession:

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
                            didSendBodyData:(int64_t)bytesSent
                             totalBytesSent:(int64_t)totalBytesSent
                   totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend;

Редактировать: Мой код отправляет JSON на сервер:

Alamofire.request("http://...", method: HTTPMethod.post, parameters: params, encoding: JSONEncoding.default,
                      headers: [...]).responseJSON {
                                    response in
                                    if response.result.isSuccess {
                                        print("result is Success")
                                    } else {
                                        print("result is Failure")
                                    }
    }

Я хочу обработать то, что если сеть отключена, и я 'Хотелось бы знать, получен ли ответ или нет.

Заранее благодарю за любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Проверка ответа

По умолчанию Alamofire рассматривает любой выполненный запрос как успешный, независимо от содержимого ответа.Вызов validate до того, как обработчик ответа вызовет ошибку, если у ответа был недопустимый код состояния или тип MIME.

Ручная проверка

Alamofire.request("https://httpbin.org/get")
    .validate(statusCode: 200..<300)
    .validate(contentType: ["application/json"])
    .responseData { response in
        switch response.result {
        case .success:
            print("Validation Successful")
        case .failure(let error):
            print(error)
        }
    }

Автоматическая проверка

Автоматически проверяет код состояния в пределах диапазона 200..<300 и что заголовок Content-Type ответа соответствует заголовку Accept запроса, если он указан.

Alamofire.request("https://httpbin.org/get").validate().responseJSON { response in
    switch response.result {
    case .success:
        print("Validation Successful")
    case .failure(let error):
        print(error)
    }
}

Статистические метрики

Временная шкала Alamofire собирает тайминги на протяжении всего жизненного цикла Request и создает объект Timeline, который отображается как свойство для всех ответовтипы.

Alamofire.request("https://httpbin.org/get").responseJSON { response in
    print(response.timeline)
}

Приведенное выше сообщение сообщает следующее Timeline информация:

  • Latency: 0,428 секунды
  • Request Duration: 0,428 секунды
  • Serialization Duration: 0,001 секунды
  • Total Duration: 0,429 секунды

Взято из Использование Alamofire .У тебя может быть более глубокий взгляд.

0 голосов
/ 08 октября 2018

Вы можете просто использовать стандартное закрытие, которое даст вам ответ.Это закрытие будет вызвано, является ли ответ ошибкой или нет.Если вы хотите проверить ход загрузки, он также может это сделать

Alamofire.download("https://httpbin.org/image/png")
    .downloadProgress { progress in // progress
        print("Download Progress: \(progress.fractionCompleted)")
    }
    .responseData { response in // usual place to get response
        if let data = response.result.value {
            let image = UIImage(data: data)
        }
    }

Прочитать Создание запроса документации для получения дополнительной информации

...