UIWebViewのリクエストにトークンを付与する
UIWebViewだってトークン付けたい!
そんな時には以下のようにすれば付与して動作させることができます。
簡単にロジックを説明すると、shouldStartLoadWithRequest時に、トークンがヘッダについてなければ付けて再リクエストしてReturn NO。
そしてついていればYES、とする。
2回リクエスト投げる感じになるのがなんだか気持ち悪い感じになるけど、これで動作はする。
何か他にいい方法ないのかなあ。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ // リクエストにトークンを付与する。 // ヘッダ内にトークンがあればYES。なければトークンを付与してもう一度投げる NSDictionary *headers = [request allHTTPHeaderFields]; BOOL hasToken = NO; for (NSString *key in [headers allKeys]) { if ([key isEqualToString:@"AccessToken"]) { hasToken = YES; break; } } if (!hasToken) { // いまのHTTPメソッドを保持 NSMutableURLRequest *req = [[NSMutableURLRequest alloc] initWithURL:request.URL]; req = [Global addTokenAndKEY:req]; // トークン付与メソッド if (!req) { return YES; } [req setHTTPMethod:@"POST"]; [req setHTTPBody:request.HTTPBody]; [webView loadRequest:req]; return NO; } return YES; }
コメントする