从苹果公司的文档:
NSURLErrorCancelled (-999)
"当异步加载取消返回。当它执行取消操作上加载资源时,Web 工具包框架委托将收到此错误。请注意,NSURLConnection 或 NSURLDownload 委托不会收到此错误如果取消下载。"
所以,最有可能为这种情况发生的情况为您加载请求,然后另一个 (或相同),第一完成之前。这可能发生。例如,如果调用loadRequest(或loadHTMLString) 这样的方法在viewDidAppear:可以调用多次。这也据报发生如果你快速点击 2 链接在UIWebView。
所以,一般的建议是审查如何以及在何处你调用loadRequest(或loadHTMLString),并可能提供一些代码。
为排除此故障,本人建议将以下痕迹添加到您的 web 视图委托:
- (void)webViewDidStartLoad:(UIWebView *)webView {
NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]);
}
- (void)webViewDidFinishLoad:(UIWebView *)webView {
NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]);
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error {
if ([error code] == NSURLErrorCancelled)
NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]);
}
如果您检查输出,您应该看到更清楚发生了什么事。如果您粘贴输出,我们可以试着进一步帮助你的
今天在调试一个加载UIWebView页面的问题,发现无法加载,浏览器里能正常打开,错误信息为
Domain=WebKitErrorDomain Code=101 “The operation couldn’t be completed. (WebKitErrorDomain error 101.)”
原因在于进行url encode的NSString中含有未转义字符。
未转义字符有很多,空格、竖线、百分号、中文字等算作未转义字符,转义后会成为 % 之类的字符。
如果确定url中均为未转义的字符,则可以用如下方式简便的方式进行url encode
NSString*encodedString=[siteUrlstringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL*weburl=[NSURLURLWithString:encodedString];
像我的这种比较复杂的url,后面跟上rsa签名的情况,用上面的一种方法会将rsa签名中的%同样进行转义一遍。
所以这里就需要找出其中可能会包含的未转义字符进行单独的转义,替换。
比如我就是将所有的空格替换为dash(-)。
// convert blank, etc. charactor to UTF8
NSMutableString*uglyMutableString=[[NSMutableStringalloc]initWithString:uglyString];
NSRangerange=[uglyMutableStringrangeOfString:@" "];
while(!(range.location==NSNotFound&&range.length==0)){
[uglyMutableStringreplaceCharactersInRange:rangewithString:@"-"];
range=[uglyMutableStringrangeOfString:@" "];
}
NSString*cleanString=[NSStringstringWithString:uglyMutableString];
returncleanString;