Domanda

Io sono file (con Apache Tomcat 6.0.32) scaricando. Quando faccio disconnessione (arresto Tomcat) alcune volte ASHITTPRequest generano errori, ma a volte (il più delle volte esattamente ... ALL TIME ESATTAMENTE! Solo se non c'è connessione, all'inizio si verifica errore) si conclude il lavoro come tutti corretti.

Quindi, c'è la questione:. Perché questo è accaduto e come posso vedere se la connessione ha perso correttamente

Grazie mille!

UPDATE:

Provare a inviare richiesta tramite TCPMon e poi fermarlo (TCPMon) e ottenere lo stesso:. ASIHTTPRequest pensare che lo scaricano correttamente fatto

UPDATE:

responseHeaders:

"Content-Disposition" = attachment;
"Content-Length" = 2277888;
"Content-Type" = "application/octet-stream";
Date = "Thu, 28 Apr 2011 12:35:32 GMT";
Server = "Apache-Coyote/1.1";
"Set-Cookie" = "JSESSIONID=98CAE6C0C4275B528D5E0F8651546AFE; Path=/ISED";

responseStatusMessage:

 HTTP/1.1 200 OK

UPDATE:

Se il computer di disconnessione a mano (scollegare il cavo) e ottenere in questo modo:

A volte ASIHTTPRequest aspetta fino timeout, e successiva richiesta di ottenere il collegamento di errore.

A volte l'errore si verifica solo in I disconnessione tempo.

A volte l'errore non si verifica solo in I disconnessione tempo:. Avanzamento del download mancanti e (se la connessione rendere nuovamente) si avvia il file download dall'inizio

E se vicino porto ASIHTTPRequest pensa che è scaricare il successo fatto.

Non riesco a capire questa logica ...

SOLUZIONE:

I risolvere il problema mettendo a confronto Content-Length nell'intestazione e byte totali leggere:

 NSString *contentLength = [[self.request responseHeaders] valueForKey:@"Content-Length"];
 NSString *downloadedBytesCount = [NSString stringWithFormat:@"%llu",[self.request totalBytesRead]];


        if ([contentLength isEqualToString:downloadedBytesCount] == NO) {
           // error maintain 
        } 

Così posso controllare se ho ottenuto tutti i dati e se non: mantenere errore. In altri casi (come scollegare manualmente) ASIHTTPRequest modo adeguato lavoro e genera errori sé.

È stato utile?

Soluzione

per la verifica dello stato della connessione sto usando biblioteca di raggiungibilità con ASI. credo raggiungibilità viene fornito con ASI non è sicuro.

questo non è il codice mia ho preso da qualche parte, ma si sta lavorando impeccabile.

#import "Reachability.h"

-(void)viewDidAppear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil];
}

- (void) checkNetworkStatus:(NSNotification *)notice
{
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            NSLog(@"The internet is down.");
            //self.internetActive = NO;

            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"The internet is working via WIFI.");
            //self.internetActive = YES;

            break;
        }
        case ReachableViaWWAN:
        {
           NSLog(@"The internet is working via WWAN.");
           //self.internetActive = YES;
           break;
        }
    }
}

Ho modificato il po 'Codice in materia mie esigenze che restituisce YES / NO. e si dovrebbe rimuovere osservatore ad un certo punto.

- (void)viewDidUnload
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

Grazie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top