使用xcode获取HTTP标头

时间:2011-08-04 18:07:58

标签: xcode http header user-agent nsurlrequest

我正在尝试获取用户代理,但是当我尝试阅读它时,它会出现(null)

NSLog(@"user agent = %@", [request valueForHTTPHeaderField: @"User-Agent"]);

请求是NSURLRequest。所以我试图获取http标头,我认为没有。当我使用

NSLog(@"http headers = %d", [[req allHTTPHeaderFields] fileSize]);

它打印出零。 req是一个NSMutableURLRequest。有谁知道为什么会这样。

这是我正在使用的方法:

 - (BOOL)webView:(UIWebView )webView2 shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSMutableURLRequest *req = (NSMutableURLRequest *)request; 
    NSString *versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString)kCFBundleVersionKey];
NSLog(@"http headers = %@", [request allHTTPHeaderFields]);
NSLog(@"http headers = %d", [[req allHTTPHeaderFields] fileSize]);
[req setValue:[NSString stringWithFormat:@"myApp/%@ %@", versionString, [request valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User-Agent"];
    NSLog(@"user agent = %@", [request valueForHTTPHeaderField: @"User-Agent"]);}

2 个答案:

答案 0 :(得分:2)

这对我有用:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    NSString* secretAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"];
    NSLog(@"navigator.userAgent = %@", secretAgent);

    NSDictionary* headers = [request allHTTPHeaderFields];
    NSLog(@"headers: %@",headers);

    NSString* ua = [request valueForHTTPHeaderField:@"User-Agent"];
    NSLog(@"User-Agent = %@", ua);
}

我不知道为什么当你只看自己的标题时,你会看filesize

比照。 https://stackoverflow.com/a/19184414/1431728

答案 1 :(得分:0)

您的请求对象中没有任何标头,因为您尚未添加任何标头。如果您要指定User-Agent标题,则需要自行添加,如here所述。