簡體   English   中英

如何為正在UIWebView中加載的所有請求設置http標頭?

[英]How to set http header for all requests being loaded in a UIWebView?

我嘗試了以下方法:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    NSLog([request valueForHTTPHeaderField:@"User-Agent"]);    

    if ([[request valueForHTTPHeaderField:@"User-Agent"] isEqualToString:@"CustomName"]) {
        return YES;
    }
    else {
        NSMutableURLRequest *mutable_request= [request mutableCopy];
        [mutable_request setValue:@"CustomName" forHTTPHeaderField:@"User-Agent"];
        request = [mutable_request copy];
        [self.web loadRequest:request];
        return NO;
    }
}

我什至將以下代碼行添加到viewDidLoad()方法:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"CustomName",@"User-Agent", nil];  
[[NSUserDefaults standardUserDefaults] registerDefaults:dict];

但是,每當我嘗試使用[self.web loadRequest:request]加載請求時,都會進入無限循環,並且HTTPHeaderField“ User-Agent”的值始終顯示為

"Mozilla/5.0 (iPhone; CPU iPhone OS 10_10_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B411" 

而不是“ CustomName”。

NSLog(@" web url to load : %@",urlToLoad);
    NSMutableURLRequest *requestObj = [NSMutableURLRequest requestWithURL:urlToLoad];
    [requestObj setValue:[NSString stringWithFormat:@"%@ Safari/528.16", [requestObj valueForHTTPHeaderField:@"User-Agent"]] forHTTPHeaderField:@"User_Agent"];
    requestObj.timeoutInterval = 120;//Request Timeout interval added for request
    [requestObj setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];//added for removing cache data of webView
    [webview loadRequest:requestObj];

我找到了答案,我不得不將HTTPHeader“ User-Agent”替換為“ UserAgent”。 刪除連字符(-)對我有用。

將以下方法添加到我的AppDelegate.h中也可以

+ (void)initialize {
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"CustomName", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM