私はこの質問の投稿にあるさまざまなアイデアを何度も成功させようと多くの時間を費やしてきました。 私がcurlを使うと、希望のヘッダ:Content-Lengthが得られます。サーバーからContent-Length(httpヘッダー)を返すようにNSURLSessionを取得する方法。 Objective-c、ios
キー::ヴァリ:
- (void) trythis { NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:config]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:myURL]; request.HTTPMethod = @"HEAD"; NSURLSessionDownloadTask *uploadTask = [session downloadTaskWithRequest:request completionHandler:^(NSURL *url,NSURLResponse *response,NSError *error) { NSLog(@"handler size: %lld", response.expectedContentLength); NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response; NSDictionary* headers = [httpResponse allHeaderFields]; NSArray *keys = [headers allKeys]; for(NSString *key in keys){ NSLog(@"key: %@ : %@", key, [headers valueForKey:key]); } NSLog(@""); }]; // 5 [uploadTask resume]; }
それはこれらのヘッダを返します。ここでは
は(SO上のどこかにあります)私の最新の試みであるのAccept-エンコーディングを、ユーザーエージェント キー:サーバー: Apache/2.4.12 キー:接続:キープアライブ キー:最終更新日:土曜日、2015年6月13日23:03:46 GMT キー:コンテンツタイプ:オーディオ/ MPEG キー:受け入れ範囲:バイト キー:日付:火曜、2016年4月12日17時59分21秒GMT キー:コンテンツエンコード:gzipで(のMacBook上の)カールを使用して
私が手:
-I http://boulderhomegrown.com/fiddletunes/JerusalemRidge-100.mp3
カールHTTP/1.1 200 OK 日付:Tue、12 Apr 2016 14:55:17 GMT サーバー:Apache/2.4.12 最終更新日:2015年6月13日23:03:46 GMT ETag: "2ec0bc0-1a172e -5186e3ca6b55f " 受け入れ範囲:バイト のContent-Length:1709870 は異なります、ユーザーエージェント のContent-Type-エンコーディング受け入れ:オーディオ/ MPEG
NOTEのContent-Lengthを!!もちろん、URLは両方とも同じです。これは私の目的のインスタンス変数です.c。
「response.expectedContentLength」で何を使いましたか? – jtbandes
それは-1に戻った。 –
curlコマンドがGETリクエストを実行していて、NSURLSessionがHEADリクエストを行っているようです。 'request.HTTPMethod = @" HEAD ";'を削除するとどうなりますか? – EricS