Skip to content

UIWebViewのリクエストにトークンを付与する

2013年10月16日

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;
    
}
広告

From → iPhone開発

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。