仅在iPhone上获取HTTP标头字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了仅在iPhone上获取HTTP标头字段相关的知识,希望对你有一定的参考价值。
我想只获取URL请求的标头。到目前为止,我一直在使用stringWithContentsOfURL()进行所有下载,但现在我只对标题感兴趣并且下载整个文件是不可行的,因为它太大了。
我找到了解决方案,显示在收到响应后如何读取标题,但如何在请求中指定我只想下载标题。撇去身体!
谢谢。
答案
我用过的。下面的代码是同步的,但您可以使用委托使其异步。
NSMutableURLRequest *newRequest = ... //init your request...
NSURLResponse *response=nil;
NSError *error=nil;
[newRequest setValue:@"HEAD" forKey:@"HTTPMethod"];
[NSURLConnection sendSynchronousRequest:newRequest returningResponse:&response error:&error];
[newRequest release];
//Get MIME type from the response
NSString* MIMEType = [response MIMEType];
编辑为使用NSMutableRequest添加替换NSURLRequest。
另一答案
异步向有问题的URL发送HEAD请求,然后只访问allHeaderFields
/ HTTPURLResponse
上的NSHTTPURLResponse
属性。
Swift 4
var request = URLRequest(url: URL(string: "https://google.com/")!)
request.httpMethod = "HEAD"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let response = response as? HTTPURLResponse,
let headers = response.allHeaderFields as? [String: String] else {
return
}
}
task.resume()
Objective-C
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]];
[request setHTTPMethod:@"HEAD"];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
NSDictionary *headers = [(NSHTTPURLResponse *)response allHeaderFields];
}];
另一答案
只实现didReceiveResponse委托方法
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSInteger statusCode = [(NSHTTPURLResponse*)response statusCode];
}
以上是关于仅在iPhone上获取HTTP标头字段的主要内容,如果未能解决你的问题,请参考以下文章
在 HTTP 请求 c# 的授权标头中获取签名的 OAuth 请求