【问题标题】:I need the correct syntax for the setValue:forHTTPHeaderField: method on NSMutableURLRequest我需要 NSMutableURLRequest 上的 setValue:forHTTPHeaderField: 方法的正确语法
【发布时间】:2009-09-01 13:20:03
【问题描述】:

我正在努力寻找正确的语法来设置 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"

foobar的文件大小为2048

干杯, 道格

【问题讨论】:

    标签: iphone nsurlrequest


    【解决方案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"];
    

    【讨论】:

      【解决方案2】:

      您的原始代码在 setValue 行中是错误的,它应该是 @"bytes=0-512"。在您的后续行动中,您使用了正确的字符串,因此不需要其他标题。

      【讨论】:

        【解决方案3】:

        您所拥有的应该是向 URL 请求添加标头值的正确方法,但是我认为只有帖子有标头值,也许我错了,您是否尝试过在其他环境中执行此操作并使其正常工作?也许取出\r\n?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-22
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多