我正在开发一款应用并尝试显示网页的一部分。
我的想法是第一个,获取页面源然后解析它!
我已经为它找到了一个有用的HTML解析器,但仍然在如何获取页面源方面苦苦挣扎?
我发现的只是UIWebview。类似的东西:
uiwebview = [[UIWebView loadRequest:[NSURLRequest requestWithURL:url]];
答案 0 :(得分:9)
使用
NSString *string = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://www.google.com"] encoding:NSUTF8StringEncoding error:nil];
答案 1 :(得分:6)
在主线程中使用+stringWithContentsOfURL:
的缺点是,在请求处于活动状态时,您的UI将被阻止。当用户在具有高延迟的网络上,当服务器响应缓慢或者请求最终超时时,这变得特别成问题。在最后一种情况下,用户可能会在很长一段时间内看到UI块。
如果服务器未返回200状态,+stringWithContentsOfURL:
方法也缺少为您提供错误信息的方法。
要在不阻止UI的情况下异步执行请求,请使用NSURLConnection
并获取代理中的数据:
- ( void )connection: (NSURLConnection *)connection didReceiveData: (NSData *)data
{
// receivedData is an NSMutableData object
[ receivedData appendData: data ];
}
然后在连接完成时启动解析:
- ( void )connectionDidFinishLoading: (NSURLConnection *)connection
{
[ self parseHTMLData: receivedData ];
}