美文网首页iOS支付宝|微信|h5支付---微信|QQ跳转
iOS WebView打开URL时会对地址自动进行URL

iOS WebView打开URL时会对地址自动进行URL

作者: 独孤流 | 来源:发表于2018-01-25 23:36 被阅读524次

    关键词: WebView、URLEnocde、loadRequest、loadHTMLString

    一、现状

    在一个客户端打开服务端传来的url,使用WebView打开时出现地址打不开的情况,见过比对检查,发现loadRequest:的地址和- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType中的获取的地址不一致,具体内容就是请求时会自动URLEncode
    比如,
    1、服务端的原地址为:https://www.baidu.com?name=+kb
    2、服务端URLEncode后传给客户端的地址为:https://www.baidu.com?name=%2bkb
    3、客户端用WebView的loadRequest:加载后再拦截处shouldStartLoadWithRequest: navigationType:看到的却是https://www.baidu.com?name=%252bkb,也就是把服务端encode过的地址又重新encode了一遍,导致webView请求后会导致地址错误或参数错误的情况

    二、解决方案

    使用webview加载一段html,然后在html里跳转到对应的服务端encode过的URL地址

    NSString *urlFromServer = @"https://www.baidu.com?name=%2bkb";
    NSString *urlHtml = [NSString stringWithFormat:@"<script>window.location=\"%@\";</script>",urlFromServer];
    [webview loadHTMLString:urlHtml baseURL:nil];
    

    相关文章

      网友评论

        本文标题:iOS WebView打开URL时会对地址自动进行URL

        本文链接:https://www.haomeiwen.com/subject/cnnbaxtx.html