2009-08-09 7 views
1

Ich habe Probleme beim Versuch, eine teilweise Get-Anforderung mit NSURLMutableRequest zu tun.Partial Get-Anforderung mit NSURLMutableRequest

stelle ich die Header-Werte wie folgt zusammen:

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"]; 

I validiert (mit wget), dass die URL, die ich unterstützt partielle GET-Anfragen verwende. Der Grund, warum ich die Fortsetzungsfunktionalität von NSURLDownload nicht verwenden kann, ist, dass es das eTag benötigt, etwas, das der Server derzeit nicht unterstützt.

Fehle ich etwas mit der Art, wie ich den Header aufstelle ??

Danke!

+0

Welches Problem haben Sie? –

+0

Außerdem sollten Sie '% lu' für die Längenwerte verwenden und sie auf' unsigned long' umwandeln, so: '@" bytes% lu-% lu /% lu ", (unsigned lang) receivedContentLength, (unsigned long) expectedContentLength, (unsigned long) expectedContentLength' Dies hält Sie für 64-Bit bereit. Für zusätzliche Zukunftssicherheit verwenden Sie '% llu' und' unsigned long long'. –

+0

Das Problem, das ich habe, ist, dass der Server mit der vollständigen Datei antwortet, anstatt mit dem Offset zu beginnen, den ich in dem Bereich angeben. Ya, guter Vorschlag! Vielen Dank. –

Antwort

0

Ok herausgefunden, was es war. Ich erhielt eine zeitweilig verschobene Weiterleitungsantwort, auf die ich eine neue Antwort mit den ursprünglichen Bereichsheadern und den neuen Umleitungsantworten erstellte. Ich habe auch das "Content-Range" -Tag in "Range" geändert.

Yah - Jetzt kann ich wget Stil fortsetzen! Angenommen, ich sollte eine if-unmodified-seit, aber nicht jetzt hinzufügen;)