WebKitErrorDomain error 101.

**原文地址:**[WebKitErrorDomain error 101.](http://blog.sina.com.cn/s/blog_67a5e4720101b5vt.html "WebKitErrorDomain <wbr>error <wbr>101.")**作者:**[咖喱先生](http://blog.sina.com.cn/u/1738925170 "咖喱先生")
今天在调试一个加载UIWebView页面的问题,发现无法加载,浏览器里能正常打开,错误信息为
Domain=WebKitErrorDomain Code=101 “The operation couldn’t be completed. (WebKitErrorDomain error 101.)”
原因在于进行url encode的NSString中含有未转义字符。
未转义字符有很多,空格、竖线、百分号、中文字等算作未转义字符,转义后会成为 % 之类的字符。
如果确定url中均为未转义的字符,则可以用如下方式简便的方式进行url encode
NSString *encodedString=[siteUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *weburl = [NSURL URLWithString:encodedString];
像我的这种比较复杂的url,后面跟上rsa签名的情况,用上面的一种方法会将rsa签名中的%同样进行转义一遍。
所以这里就需要找出其中可能会包含的未转义字符进行单独的转义,替换。
比如我就是将所有的空格替换为dash(-)。
// convert blank, etc. charactor to UTF8 NSMutableString * uglyMutableString = [[NSMutableString alloc] initWithString:uglyString]; NSRange range = [uglyMutableString rangeOfString:@" "]; while (!(range.location == NSNotFound && range.length == 0)) { [uglyMutableString replaceCharactersInRange:range withString:@"-"]; range = [uglyMutableString rangeOfString:@" "]; }

NSString * cleanString = [NSString stringWithString:uglyMutableString];
return cleanString;

Share Comments