之前后台接口为商品详情进行了一次改造,所有商品的详情信息不返回字符串内容,而是返回了一个链接地址,APP通过加载链接地址内容进行展示。当时跟接口讨论完之后就开工干活,在联调阶段发现,APP加载后台接口返回的HTML会出现乱码问题,于是找接口人员处理,可接口人员说你们APP能自己处理吗?
答:能😏
由于项目中采用的是WKWebView,所以下面是WKWebView针对编码格式问题导致的乱码进行处理:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
NSString *_webUrlStr = navigationAction.request.URL.absoluteString;
NSString *lastName =[[_webUrlStr lastPathComponent] lowercaseString];
if ([lastName containsString:@".html"]) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *data = [NSData dataWithContentsOfURL:navigationAction.request.URL];
dispatch_async(dispatch_get_main_queue(), ^{
[self.webView loadData:data MIMEType:@"text/html" characterEncodingName:@"UTF-8" baseURL:nil];
});
});
decisionHandler(WKNavigationActionPolicyCancel);
return;
}
decisionHandler(WKNavigationActionPolicyAllow);
}
不过,最后当然还是接口对HTML编码方式进行了修改。😄