NSURLRequest
Objective-Cからすべての HTTP ヘッダーを取得するにはどうすればよいですか?
33833 次
5 に答える
42
これは、iPhone プログラミングの問題の簡単ではあるが明白ではないクラスに分類されます。簡単な投稿に値する:
HTTP 接続のヘッダーはNSHTTPURLResponse
クラスに含まれています。変数がある場合は、allHeaderFields メッセージを送信するNSHTTPURLResponse
ことで、ヘッダーを簡単に取得できます。NSDictionary
同期リクエストの場合 (ブロックされるためお勧めしません)、次のように入力するのは簡単NSHTTPURLResponse
です。
NSURL *url = [NSURL URLWithString:@"http://www.mobileorchard.com"];
NSURLRequest *request = [NSURLRequest requestWithURL: url];
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest: request returningResponse: &response error: nil];
if ([response respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary *dictionary = [response allHeaderFields];
NSLog([dictionary description]);
}
非同期リクエストでは、もう少し作業を行う必要があります。コールバックが呼び出されると、2 番目のパラメータとしてconnection:didReceiveResponse:
渡されます。次のようNSURLResponse
にキャストできます。NSHTTPURLResponse
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if ([response respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary *dictionary = [httpResponse allHeaderFields];
NSLog([dictionary description]);
}
}
于 2012-11-05T17:03:01.913 に答える
2
YourViewController.h
@interface YourViewController : UIViewController <UIWebViewDelegate>
@property (weak, nonatomic) IBOutlet UIWebView *yourWebView;
@end
YourViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
//Set the UIWebView delegate to your view controller
self.yourWebView.delegate = self;
//Request your URL
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://website.com/your-page.php"]];
[self.legalWebView loadRequest:request];
}
//Implement the following method
- (void)webViewDidFinishLoad:(UIWebView *)webView{
NSLog(@"%@",[webView.request allHTTPHeaderFields]);
}
于 2012-11-05T16:33:38.810 に答える