Je télécharge un fichier (avec apache tomcat 6.0.32). Quand je fais déconnecter (shutdown tomcat) quelques fois ASHITTPRequest génère une erreur, mais parfois (la plupart du temps exactement ... TOUS LES TEMPS EXACTEMENT! Seulement s'il n'y a pas de connexion au début se produit erreur) finit le travail comme tout correct. Donc, il y a la question: pourquoi cela est-il arrivé et comment puis-je regarder si la connexion a perdu correctement.ASIHTTPRequest pas d'erreur en cas de perte de connexion
Merci beaucoup!
MISE À JOUR:
Essayez d'envoyer la demande par TCPMon puis l'arrêter (TCPMon) et obtenir le même: ASIHTTPRequest pense que le téléchargement est fait correctement.
MISE À JOUR:
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
MISE À JOUR:
Si l'ordinateur déconnecter manuellement (débranchez le câble) et obtenir ceci:
Parfois ASIHTTPRequest attend till timeout et la requête suivante obtient une erreur de connexion.
Une erreur se produit parfois juste au moment où je me déconnecte.
Parfois, une erreur ne se produit pas juste à temps Je me déconnecte: la progression du téléchargement est manquante et (si je rétablis la connexion) le fichier commence le téléchargement depuis le début.
Et si le port proche ASIHTTPRequest pense que le téléchargement a réussi.
Je ne comprends pas cette logique ...
SOLUTION:
Je résous le problème en comparant Content-Length en-tête et le total des octets lus:
NSString *contentLength = [[self.request responseHeaders] valueForKey:@"Content-Length"];
NSString *downloadedBytesCount = [NSString stringWithFormat:@"%llu",[self.request totalBytesRead]];
if ([contentLength isEqualToString:downloadedBytesCount] == NO) {
// error maintain
}
donc je peux vérifier si j'ai toutes les données et sinon: maintenir une erreur. Dans d'autres cas (comme la déconnexion manuelle) ASIHTTPRequest fonctionne de manière appropriée et génère des erreurs par soi-même.
Avez-vous testé cela avec NSURLConnection?Que dit la réponse (en-tête et corps) dans la méthode déléguée requestFinished? –