And*_*wSB 6 objective-c uiwebview ios nsurlsession
我正在尝试缓存一个网页,然后我可以使用UIWebView显示该网页.
我有NSURLSessionDataTask一个for循环中的相关内容(试图缓存6个网页)在另一个的完成块内NSURLSessionDataTask.当我跑步时,我不断收到此错误:
Ayy there was error downloading, data:<>
response:(null)
error:Error Domain=NSURLErrorDomain Code=-1002 "The operation couldn’t be completed. (NSURLErrorDomain error -1002.)" UserInfo=0xdd89d30 {NSUnderlyingError=0xdd89ba0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1002.)"}
这是我正在呼唤的片段
for (MAClass *class in [myDictResult objectForKey:@"classes"]) {
NSString *PRURL = [[[class assignments] objectAtIndex:[[class assignments] count]-1] assignmentName];
NSLog(@"PRURL is %@", PRURL);
NSURLSessionDataTask *progressReportTask = [defaultSession dataTaskWithURL:[NSURL URLWithString:PRURL] completionHandler:^(NSData *progressReportData, NSURLResponse *progressReportResponse, NSError *progressReportError) {
if ([progressReportData length] > 0 && progressReportError == nil) {
NSLog(@"got dat data");
} else NSLog(@"Error with getting data data:%@\nresponse:%@\nerror:%@", progressReportData, progressReportResponse, progressReportError);
}];
[progressReportTask resume];
NSLog(@"After request");
}
Run Code Online (Sandbox Code Playgroud)
我已经确定该URL是有效的,看到这是其他人得到相同错误的原因(我的网址就像https://mistar.oakland.k12.mi.us/novi/StudentPortal/Home/PrintProgressReport/20152193^HS4,当我将它们放入浏览器时有效)
我究竟做错了什么?
Rob*_*Rob 16
-1002是NSURLErrorUnsupportedURL/ kCFURLErrorUnsupportedURL.将来,您可以搜索Xcode文档,也可以NSURLErrorDomain使用快速打开(shift+ command+ O)来浏览标题以进行定义NSURLErrorDomain.无论哪种技术将会导致你发现在-1002 NSURLErrorDomain是NSURLErrorUnsupportedURL.
出现此错误的原因是您的网址包含一些必须进行转义百分比的字符.并且Web浏览器会经常为您执行必要的百分比转义,这就是它在那里工作的原因.
您可以使用stringByAddingPercentEscapesUsingEncoding将URL转换为可接受的格式:
NSString *urlString = @"https://mistar.oakland.k12.mi.us/novi/StudentPortal/Home/PrintProgressReport/20152193^HS4";
NSURL *url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURLSessionTask *task = [defaultSession dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
...
}];
Run Code Online (Sandbox Code Playgroud)
顺便说一句,在将Web浏览器结果与应用程序进行协调时,Charles非常有用.从浏览器运行请求,然后再从应用程序运行请求,并在Charles中比较结果.如果你对这些进行了比较,你会发现你需要百分之百地逃避URL.
顺便说一句,您还可以参考RFC 3986的第2部分,以获取URL中哪些字符必须被转义百分比的技术说明.
| 归档时间: |
|
| 查看次数: |
9152 次 |
| 最近记录: |