NSURLConnection повторить запрос - PullRequest
0 голосов
/ 14 февраля 2011

Как я могу запросить повторную попытку соединения NSURLC? в моем методе connectionDidFinishLoading возможно ли сохранить, а затем повторить попытку подключения?

Я посмотрел на [начало соединения], но это, похоже, ничего не делало. Объект соединения по-прежнему содержит исходный запрос?

Спасибо

Ответы [ 3 ]

6 голосов
/ 14 февраля 2011

Это не указано явно, но все же документация предполагает, что экземпляр NSURLConnection не предназначен для повторного использования:

NSURLConnection сохраняет свой делегат при инициализации.Он освобождает делегата, когда соединение завершает загрузку, происходит сбой или отменяется.

Если делегат уже освобожден, в действительности нет смысла реанимировать объект соединения.

0 голосов
/ 19 сентября 2015

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

class MyConnectionHandler {
    var request:NSMutableURLRequest?
    var connection: NSURLConnection?
    var retryCount=0
    var maxRetries=2

    ...
    functions to setup the request object, and create a connection
    ----

    func connection(connection: NSURLConnection, didFailWithError error: NSError) {
        if(retryCount<maxRetries) {
            retryCount++
            self.connection=NSURLConnection(request: request!, delegate: self, startImmediately: true)
        } else {
            <throw a tantrum>
        }
    }
0 голосов
/ 14 февраля 2011

На вашем месте я бы посмотрел на ASIHTTPRequest , который гораздо НАСТОЛЬКО проще в использовании, чем встроенный бизнес NSURLConnection, но также гораздо более интересен. Вы можете указать количество повторных попыток, время ожидания сбоя и, в основном, каждый аспект HTTP-запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...