NSURLErrorCancelled

从苹果公司的文档:

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]);

}

如果您检查输出,您应该看到更清楚发生了什么事。如果您粘贴输出,我们可以试着进一步帮助你的



NSURLErrorCancelled_第1张图片


今天在调试一个加载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;

你可能感兴趣的:(NSURLErrorCancelled)