2

このコードを使用して基本認証を使用してWebページに移動するUIWebViewがあります

NSString *authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];
    [urlRequest setValue:authValue forHTTPHeaderField:@"Authorization"];

これで、リンクがクリックされると、webViewshouldStartLoadWithRequestが起動されますが、次のページにも承認が必要なため、ページはロードされません。

クリックしたリンクに認証を自動的に追加する方法はありますか?

ありがとう

4

1 に答える 1

5

shouldStartLoadで新しいリクエストを適切に作成する方法

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    BOOL shouldNavigate = NO;
    NSString *existingAuthValue = [request valueForHTTPHeaderField:@"Authorization"];
    if (existingAuthValue == nil)
    {
        NSString *authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];
        [request setValue:authValue forHTTPHeaderField:@"Authorization"];
        NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:request.URL];
        //Append any other info from the old request
        [webView performSelector:@selector(loadRequest:) withObject:newRequest afterDelay:0];
    }
    else
    {
        shouldNavigate = YES;
    }
    return shouldNavigate;
}

編集:申し訳ありませんが、NSURLRequest!=NSMutableURLRequestを考慮していませんでした。コードを更新します。

于 2012-10-10T21:31:08.937 に答える