在 viewDidLoad
, 我正在使用 NSURLRequest
和 NSURLConnection
:
NSURLRequest *site_request =
[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
NSURLConnection *site_connection =
[[NSURLConnection alloc] initWithRequest:site_request delegate:self];
然后我用
-(void)connection:(NSURLConnection *)site_connection didReceiveData:(NSData *)data
{
site_response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}
我在
site_response
中有整个 HTML .我想创建一个不可见的
UIWebView
这将从NSURLRequest
“打开”页面为了使用 JavaScript 来获取这样的内容:NSString *myText = [my_webView stringByEvaluatingJavaScriptFromString:
@"document.documentElement......"];
在我的 .h 中,我有:
UIWebView *my_webview;
@property (nonatomic, retain) UIWebView *my_webview;
在我的 .m 中,我有:
@synthesize torrents_webview;
我的
viewDidLoad
在 NSURLRequest
之后拥有[my_webview loadRequest:site_request];
我用
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//an alertview here
}
为了确保它有效。但什么也没有发生。它不提供警报 View 。
我究竟做错了什么?
最佳答案
webViewDidFinishLoad:是 UIWebView 委托(delegate)的一个方法。您没有在显示的代码中的任何位置设置委托(delegate)。
@interface YourClass : UIViewController <UIWebViewDelegate>
...
- (void)loadView
{
self.webView.delegate = self;
}
...
- (void)dealloc
{
self.webView.delegate = nil;
}
此外,如果您使用 NSURLRequest,您将再次获得该页面。但是没有必要使用 NSURLConnection,直接使用 NSURLRequest 加载 UIWebVIew 即可。
或者,如果您必须使用 NSURLConnection,则在文件下载后将其保存到磁盘并使用 LoadHTMLString 加载内容。
关于ios - 如何获取网站的 HTML 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10924696/