0

HTTP サーバーからバイト範囲の読み込みを行う HTTP ヘッダー情報を設定するための正しい構文を作成しようと、頭を悩ませています。

これは NSMutableURLRequest の問題のあるメソッドです - (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field

これは、このメソッドを使用して URL 要求の最初の 512 バイトをロードする方法です。

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];    
[request setHTTPMethod:@"GET"];
[request setValue:@"0-512\r\n" forHTTPHeaderField:@"Range"];

これまでのところ、それは無視され、常にデータ ペイロード全体を受け取ります。指定されたバイトの範囲(0〜512)が必要です。誰か私の頭痛を和らげてくれませんか?

更新: curl を使用して、Web サーバーがバイト範囲をサポートしていることを確認しました: curl --range 0-2047 http://www.somewhere.com/humungodata.dat -o "foobar"

foob​​ar のファイルサイズは 2048 です

乾杯、ダグ

4

3 に答える 3

1

問題が解決しました。

追加のヘッダー フィールドを追加することで、コードはすぐに正しく機能しました。なんで?わからない。しかし、それは機能します:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[request setHTTPMethod:@"GET"];

[request setValue:@"keep-live"      forHTTPHeaderField:@"Connection"];
    [request setValue:@"300"        forHTTPHeaderField:@"Keep-Alive"];
[request setValue:@"bytes=0-2047"   forHTTPHeaderField:@"Range"];
于 2009-09-01T16:31:14.813 に答える
0

元のコードは setValue 行で間違っていました。@"bytes=0-512" である必要があります。フォローアップでは、正しい文字列を使用したため、他のヘッダーは必要ありません。

于 2013-08-04T00:36:42.613 に答える
-1

URLリクエストにヘッダー値を追加する正しい方法があるはずですが、ヘッダー値を取得したのは投稿だけだと思いました。おそらく間違っています。他の環境でこれを試してみて、動作するようになりましたか? たぶん\r\nを取り出しますか?

于 2009-09-01T13:33:56.133 に答える