2009-09-01 154 views
0

我拉着我的头发试图调出正确的语法来设置HTTP头信息从HTTP服务器执行字节范围加载。我需要setValue的正确语法:forHTTPHeaderField:NSMutableURLRequest上的方法

这是NSMutableURLRequest 违规方法 - (无效)的setValue:(的NSString *)值forHTTPHeaderField:(的NSString *)字段

这是我如何使用这种方法加载的第一个512字节的网址请求。

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

到目前为止,它被忽略,我总是收到整个数据有效载荷。我只想要指定的字节范围(0 - 512)。有人可以缓解我的头痛吗?

更新: 我已经使用卷曲,以确认我的Web服务器支持字节范围正是如此: 卷曲--range 0-2047 http://www.somewhere.com/humungodata.dat -o “foobar的”

Foobar的文件大小为2048

干杯, 道格

回答

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

你有什么应该有一个标头值添加到URL请求的正确方法,但我以为只是帖子得到了标头值,也许我错了,你尝试过其他enviroments这样做的,得到它的工作?也许拿出\ r \ n?

0

你原来的代码在setValue行中是错误的,它应该是@“bytes = 0-512”。在你的后续行动中,你使用了正确的字符串,所以不需要其他头文件。