iphone - UIWebView 捕获响应头

标签 iphone ios uiwebview http-headers response

我搜索/谷歌了很多,但无法获得有关如何在 UIWebview 中捕获 HTTP 响应 header 的答案。假设我在 App Launch 中将用户重定向到 UIWebview 中的注册网关(已经处于事件状态),当用户完成注册时,应用程序应该收到在注册时分配给用户的成功唯一 ID 的通知,该 ID 在 HTTP 响应 header 中传回.

有什么直接的方法可以使用 UIWebview 捕获/打印 HTTP 响应 header ?

最佳答案

无法从 UIWebView 获取响应对象(为此向 apple 提交错误,id 说)

但是有两个解决方法

1) 通过共享的 NSURLCache

- (void)viewDidAppear:(BOOL)animated {
    NSURL *u = [NSURL URLWithString:@"http://www.google.de"];
    NSURLRequest *r = [NSURLRequest requestWithURL:u];
    [self.webView loadRequest:r];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSCachedURLResponse *resp = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];
    NSLog(@"%@",[(NSHTTPURLResponse*)resp.response allHeaderFields]);
}
@end

如果这对你有用,那就是理想的


其他

  1. 您可以完全使用 NSURLConnection,然后只使用您下载的 NSData 来提供 UIWebView :)

这将是一个糟糕的解决方法! (正如理查德在评论中指出的那样。)它确实有很大的缺点,你必须看看它是否是你的情况下的有效解决方案

NSURL *u = [NSURL URLWithString:@"http://www.google.de"];
NSURLRequest *r = [NSURLRequest requestWithURL:u];
[NSURLConnection sendAsynchronousRequest:r queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *resp, NSData *d, NSError *e) {
    [self.webView loadData:d MIMEType:nil textEncodingName:nil baseURL:u];
    NSLog(@"%@", [(NSHTTPURLResponse*)resp allHeaderFields]);
}];

关于iphone - UIWebView 捕获响应头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476539/

相关文章:

ios - UITextView 字体大小未更新

ios - UITableView beginUpdates/endUpdates 指定动画类型

javascript - UIWebview javascript 仅在发布版本中失败

iphone - 有什么方法可以在不获取白色背景的情况下更新 UIWebView 吗?

ios - iOS 设备上的低级网络流量访问

jquery - 什么是 jQuery Mobile?它能够为 Android 创建游戏吗?

iphone - iPhone 中的网络存档

ios - 重复代码以检查iOS版本

iOS 从另一个类定义 SEL

uitableview - 为某些行显式设置行高,但对其他行使用estimatedRowHeight