我花了很多时间尝试在这个问题的帖子中找到的各种想法,但没有成功。当我使用curl时,我会得到所需的头:content-length。
这里是我的最新尝试(在SO的某处找到):
- (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];
}
它返回这些头:
Key:Vary:Accept-Encoding,User-Agent Key:Server:Apache/2.4.12 Key:Connection:Keep-Alive Key:Last-Modified:Sat,Jun 2015 23:03:46 GMT Key:Content-Type:Audio/MPEG Key:Accept-Ranges:bytes Key:Date:Tue,Tue,Jun 2016 17:59:21 GMT Key:Content-Encoding:gzip
使用curl(在macbook上)我得到:
curl-i http://boulderhomegrown.com/fiddletunes/qualiosemridge-100.mp3
HTTP/1.1 200 OK日期:Tue,12 Apr 2016 14:55:17 GMT服务器:Apache/2.4.12上次修改:Sat,13 Jun 2015 23:03:46 GMT etag:“2EC0BC0-1A172E-5186E3CA6B55F”接受-范围:字节内容-长度:1709870变化:接受-编码,用户-代理内容-类型:音频/MPEG
注意内容长度!!当然,两者的url都是相同的。它是我的Objective-C中的一个实例变量。
默认情况下,您发送的请求具有header-accept-encoding:gzip,deflate,服务器apache在本例中不添加headercontent-length(默认情况下对于较大的文件)。因此,如果您用value:identity替换该头。它将提供文件的正确大小。
代码如下:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:myURL];
request.HTTPMethod = @"HEAD";
[request addValue:@"identity" forHTTPHeaderField:@"Accept-Encoding"];
只需添加字段,您就会在响应中得到正确的头,就像curl-i所做的那样。
我似乎得到了错误的哈希值通过我的webSocket键。据我所知,套接字的客户端工作,因为当我让它连接到其他服务器时,它是成功的。 指数js 指数html 运行时密钥和哈希对的示例如下: PxsrStN1CGLK/JBYydUFjg== QAK TE6u sV705GI LpP4yKM04Y= 顶部是浏览器给出的键,底部是getAVal函数返回的值,它是不正确的,导致此消息。 WebSocket握手
如何使用.NET将Content-Length,Content-Type和Last-Modified添加到HttpResponseMessage标头。 我需要手动将所有这些值添加到响应中,添加这些字段后,我需要从服务器返回响应。我试着以空闲的方式添加这些字段 我得到了休耕的错误 “错误使用了标头名称。请确保请求标头与HttpRequestMessage一起使用,响应标头与HttpReponseMe
问题内容: 我有一个网页,其中包含过滤文本框和列表框。修改文本框将触发AJAX请求,该请求将返回一个值数组,用于填充列表框。 这些调用有时会失败,这取决于返回的数据大小。返回的小尺寸数据将导致错误,大尺寸的数据已成功返回并进行了处理。 仅当我使用大于4.2的jQuery版本时,才会发生此问题。如果我使用jQuery 4.2,则不会有问题。 这是调用的代码: 如果返回两个元素,这是调试控制台的内容:
问题内容: 我的JavaScript应用程序需要确定资源的长度, 然后 才能使用Ajax下载资源。通常这不是问题,您只需发出HEAD请求并提取即可。 但是,资源存储在与客户端不同的服务器上。(我控制的服务器)。因此,我正在使用CORS发出跨域Ajax请求,并已设置服务器以使用自定义标头响应HEAD请求和GET / POST请求的预检请求。 总的来说,这很有效,但是在使用CORS时,我似乎找不到一种
问题内容: 我正在使用Android中包含的Apache HttpClient(4.1)执行HttpPut。我已经验证我只有1个content- length标题。但是,每次发送请求时,都会收到有关已指定的Content-Length标头的协议异常。 引起原因:org.apache.http.ProtocolException:Content- Length标头已存在于org.apache.htt
问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于: