在ASIHTTPRequest库中是否有ASIWebPageRequest的替代品,我可以用它来下载iOS中的整个网页,包括CSS,JavaScript和图像文件等?我似乎无法在AFNetworking框架中找到类似的类,到目前为止我的搜索还没有成功。我不能使用ASIHTTPRequest,因为我似乎无法在我的任何应用程序中使用它,没有我为iOS7找到工作的例子而且我更倾向于使用更新的东西。
我基本上希望将整个网页本地存储在iPhone / iPad上的目录中,以便用户可以在本地编辑它,然后将整个目录发送到他们的Web服务器。用户还需要能够在UIWebView中随时查看网页。
如果无法做到这一点,我只需下载HTML文件,然后解析它以查找外部资源的URL,然后单独下载。我宁愿不这样做,但是如果我必须那么什么是最好的图书馆来完成这个?
感谢任何人帮助我!
答案 0 :(得分:2)
您似乎正在使用wget
之类的内容,但我不确定您是否可以在iOS中执行此操作。
您可以使用本机方法NSString stringWithContentsOfURL:encoding:error:
来获取网页的HTML。
答案 1 :(得分:1)
我使用UIWebView并缓存它所做的所有请求
答案 2 :(得分:1)
您可以通过自定义NSURLProtocol拦截从您的应用程序发出的所有HTTP请求。你将不得不扩展这个概念,但这是一个简单的类,当放入你的项目时将注销所有正在发出的请求(例如从UIWebView)。
@interface TSHttpLoggingURLProtocol : NSURLProtocol
@end
@implementation TSHttpLoggingURLProtocol
+ (void) load
{
[NSURLProtocol registerClass: self];
}
+ (BOOL) canInitWithRequest: (NSURLRequest *) request
{
NSLog( @"%@", request.URL );
return NO;
}
@end
您可以对此进行扩展,并实际执行协议实现的请求(有关更完整的示例,请参阅https://github.com/rnapier/RNCachingURLProtocol)。或者您可以跟踪请求并稍后自行下载。
我知道将这样的协议处理程序与UIWebView的特定实例相关联并不容易。您将使用此拦截应用程序中的所有请求。 (警告 - 在iOS7中,协议可以注册到特定的NSURLSessions;对于这些我认为全局注册的协议处理程序不会拦截。)