获取某个网页的源代码显示在手机界面上
2015-06-10 19:57
357 查看
* 需求 :
根据网址获取网页的源代码
思路 :
与前面的网络图片查看器相似.
进行网络访问,连接服务器获取网页源码的操作,只能放在子线程中进行了。而获取控件进行界面修改的操作只能放在主线程中了。
所以,必须将获得的源码从子线程中传到主线程中去,这就要用到了Handler机制了。
* 注意 : 网页上的源码是用的什么编码集,对应的也要用相应的编码集,否则会出现乱码.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
* 首先,定义个方法 getYuanMaFromNet ,专门用来进行访问网络,获得源码的操作.
步骤 :
* 1,将网页的地址变成个URL对象。
* 2,通过该URL对象得到个HttpURLConnection连接对象。
* 3,给该连接对象设置好请求方式,连接超时的时间,以及读取内容超时的时间,然后开始连接服务器。
* 4,获得该链接的返回码。
* 5,如果该返回码为200,则表示连接服务器成功,那么就获取该连接的输入流。
* 6,从输入流中提取出网页的源代码.
代码 :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
将获得的源码显示在手机界面上
思路 :
* A,准备好布局文件和权限的添加.
* B,在主线程中获取需要的控件,
* C,
然后开启一个子线程,在子线程中进行访问网络,获取网页源码的操作.
* D,在主线程中定义个Handler,并重写handleMessage方法
* E,在子线程中将获取到的网页源码用Handler发送到主线程中去.
* F,在主线程中将网页源码显示在界面上.
代码 :
根据网址获取网页的源代码
思路 :
与前面的网络图片查看器相似.
进行网络访问,连接服务器获取网页源码的操作,只能放在子线程中进行了。而获取控件进行界面修改的操作只能放在主线程中了。
所以,必须将获得的源码从子线程中传到主线程中去,这就要用到了Handler机制了。
* 注意 : 网页上的源码是用的什么编码集,对应的也要用相应的编码集,否则会出现乱码.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
* 首先,定义个方法 getYuanMaFromNet ,专门用来进行访问网络,获得源码的操作.
步骤 :
* 1,将网页的地址变成个URL对象。
* 2,通过该URL对象得到个HttpURLConnection连接对象。
* 3,给该连接对象设置好请求方式,连接超时的时间,以及读取内容超时的时间,然后开始连接服务器。
* 4,获得该链接的返回码。
* 5,如果该返回码为200,则表示连接服务器成功,那么就获取该连接的输入流。
* 6,从输入流中提取出网页的源代码.
代码 :
//自定义个方法用来获取网页源码 public String getYuanMaFromNet(String url) { try { <span style="white-space:pre"> </span>//1,将网页的地址变成个URL对象。 URL u = new URL(url); //2,通过该URL对象得到个HttpURLConnection连接对象。 HttpURLConnection conn = (HttpURLConnection)u.openConnection(); //3,给该连接对象设置好请求方式,连接超时的时间,以及读取内容超时的时间,然后开始连接服务器。 conn.setRequestMethod("GET");//必须大写 conn.setConnectTimeout(5000);//设置连接的超时时间为5s conn.setReadTimeout(5000);//设置读取的超时时间为5s conn.connect();//开始连接服务器 //4,获得该连接的返回码 int responseCode = conn.getResponseCode(); if(responseCode == 200)//5,如果返回码为200,则表示连接成功,可以开始获取该链接的输入流 { InputStream is = conn.getInputStream(); //6,从输入流中提取出网页的源代码. BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); StringBuffer sb = new StringBuffer(); String text = null; while((text = br.readLine()) != null) { sb.append(text+"/r/n"); } String yuanMa = sb.toString(); br.close(); //将获得的源码返回 return yuanMa; } } catch (Exception e) { e.printStackTrace(); } return null; }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
需求 :
将获得的源码显示在手机界面上
思路 :
* A,准备好布局文件和权限的添加.
* B,在主线程中获取需要的控件,
* C,
然后开启一个子线程,在子线程中进行访问网络,获取网页源码的操作.
* D,在主线程中定义个Handler,并重写handleMessage方法
* E,在子线程中将获取到的网页源码用Handler发送到主线程中去.
* F,在主线程中将网页源码显示在界面上.
代码 :
public class MainActivity extends Activity { private EditText editText; private TextView textView; //D,在主线程中定义个Handler,并重写handleMessage方法,获取子线程发来的网页源码 private Handler handler = new Handler(){ public void handleMessage(Message msg) { //获取子线程发来的网页源码 String yuanMa = (String)msg.obj; // F,在主线程中将网页源码显示在界面上,修改界面的操作只能在主线程中进行 textView.setText(yuanMa); } }; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //B,在主线程中获取需要的控件, editText = (EditText) findViewById(R.id.editText); textView = (TextView) findViewById(R.id.textView); } public void onClick(View v) { //C, 然后开启一个子线程,在子线程中进行访问网络,获取网页源码的操作. final String url = editText.getText().toString(); new Thread(new Runnable() { public void run() { //获取返回的网页源码 String yuanMa = getYuanMaFromNet(url); //E,在子线程中将获取到的网页源码用Handler发送到主线程中去. Message msg = new Message(); msg.obj = yuanMa; handler.sendMessage(msg); } }).start(); } }
相关文章推荐
- 【Java】Java Socket 通信示例
- java处理图片--图片的缩放,旋转和马赛克化
- java处理图片--图片的缩放,旋转和马赛克化
- Python之global
- git, github使用
- java实现简易计算器
- Laravel查看当前已有的路由信息
- 关于const char *s和char * const s
- Laravel 学习笔记 —— 神奇的服务容器
- JAVA 7 ForkJoin学习笔记
- 转:Delphi 回调函数及例子
- 学习笔记:python
- iphone-用代码创建界面(Creating Views from Code)
- googel 图片搜索原理
- Algorithms—17.Letter Combinations of a Phone Number
- php调试
- 为什么 Lua 的新版本越来越慢?
- C++按指定模式截取字符串函数
- LeetCode 之 Set Matrix Zeroes — C++实现
- Go语言Slice去重