2013年8月26日

【iPhone】UIWebViewのリクエストヘッダーを書き換える



そろそろiPhone5S発表されますかねぇ。
発売が楽しみです。

今回はUIWebViewのリクエストヘッダーをどうこうする方法をメモ



User-Agentを書き換える


NSDictionary *dictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Custom User Agent", @"UserAgent", nil];
 [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];

の2行でデフォルトのUser-Agentが上書きされます。

ただ、アプリ内全てのUIWebViewが書き換わってっしまいますので、
一部の箇所でのみUser-Agentを変更したいなんて場合には使えません。



カスタムヘッダーを付ける


HTTPのリクエストヘッダーは何もUser-Agentだけではありません。

なので、独自にヘッダーを付けて、サーバ側でUAを見て判断してるなんて時には、
独自で付けてあげれば良いのです。

UIWebViewを拡張したクラスを作成し、
loadRequestのメソッドを上書きします。

- (void)loadRequest:(NSURLRequest *)request
{
    NSMutableURLRequest *mRequest = (NSMutableURLRequest *)[request mutableCopy];
    [mRequest setValue:@"Custom Value" forHTTPHeaderField:@"Custom Header"];
    [super loadRequest:mRequest];
}

これでカスタムヘッダーが追加出来ました。