2009-08-09 9 views
1

J'ai des difficultés à faire une demande d'obtention partielle en utilisant NSURLMutableRequest.Partial Obtenir une requête en utilisant NSURLMutableRequest

je configurer les valeurs d'en-tête comme suit:

NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url]; 
NSString* range = [NSString stringWithFormat:@"bytes %d-%d/%d", receivedContentLength, expectedContentLength, expectedContentLength]; 
[request setHTTPMethod:@"GET"]; 
[request addValue:[fmt stringFromDate:[NSDate date]] forHTTPHeaderField:@"Date"]; 
[request addValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"]; 
[request addValue:@"bytes" forHTTPHeaderField:@"Accept-Ranges"]; 
[request addValue:range forHTTPHeaderField:@"Content-Range"]; 
[request addValue:[NSString stringWithFormat:@"%d", (expectedContentLength - receivedContentLength)] forHTTPHeaderField:@"Content-Length"]; 

J'ai validé (en utilisant WGet) que l'URL que je suis utilisé prend en charge les requêtes GET partielles. La raison pour laquelle je ne peux pas utiliser la fonctionnalité de reprise de NSURLDownload est qu'il nécessite l'eTag, ce que le serveur ne supporte pas actuellement. Est-ce que je manque quelque chose avec la façon dont je suis en train de configurer l'en-tête ???

Merci!

+0

Quel problème avez-vous? –

+0

En outre, vous devez utiliser '% lu' pour les valeurs de longueur et les convertir en' unsigned long', comme ceci: '@" octets% lu-% lu /% lu ", (unsigned long) receivedContentLength, (unsigned long) expectedContentLength, (unsigned long) expectedContentLength' Ceci vous permet de rester prêt pour 64 bits. Pour une protection supplémentaire, utilisez '% llu' et' unsigned long long'. –

+0

Le problème que j'ai est que le serveur répond avec le fichier complet plutôt que de commencer au décalage que je spécifie dans la gamme. Ya, bonne suggestion! Merci. –

Répondre

0

Ok compris ce que c'était. Je recevais une réponse de redirection temporairement déplacée à laquelle j'ai créé une nouvelle réponse avec les en-têtes de plage d'origine et les nouvelles redirections. J'ai également changé la balise "Content-Range" en "Range". Yah - Maintenant, je peux soutenir les CV de style wget! Supposons que je devrais ajouter un si-non modifié-depuis mais pas maintenant;)

Questions connexes