【Android开发】网络通信之网页源码查看器

今天学习了安卓开发中有关网络通信相关的东西。

根据教学视频,我按照步骤写了一个“网页源码查看器”。通过写这个东西,我学会了使用URL和 HttpURLConnection取得与网站的链接

 

部分链接代码:

/*
     * 获取网页html源代码:
     * path 网页路径
     * */
public static String getHtml(String path) throws Exception{
//将path包装成一个URL对象
    URL url=new URL(path);
    //取得链接对象(基于HTTP协议链接对象)
    HttpURLConnection conn=(HttpURLConnection) url.openConnection();
    //设置超时时间
    conn.setConnectTimeout(5000);
    //设置请求方式
    conn.setRequestMethod("GET");
    //判断请求是否成功(看一下getResponseCode)
    if(conn.getResponseCode()==200){
    	InputStream instream=conn.getInputStream();
    	//流的工具类,专门从流中读取数据(返回的是二进制数据)
    	byte[] data= streamTool.read(instream);
    	String html= new String(data,"UTF-8");
    	return html;
    }
return null;
}

 

上面的代码中有一个streamTool.的工具类,也是要自己去写的,通过写这个类,学会了javaIO流的部分应用。

 

下面代码中的instream是上面传进去的输入流对象

部分代码:

/*
     * 读取流中的数据
     * */
public static byte[] read(InputStream instream) throws Exception{
ByteArrayOutputStream outStream=new ByteArrayOutputStream();
//定义一个字节数组
byte[] buffer=new byte[1024];
//读满数组,就会返回(返回的是int型,代表读取的数组长度)
//当返回值为-1时说明已经读完
int len=0;
while((len = instream.read(buffer)) !=-1){
//buffer有多少数据就读多少
outStream.write(buffer, 0, len);
}
instream.close();
return outStream.toByteArray();
}


在主界面得到html信息并显示

private EditText pathText;
    private TextView codeView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pathText=(EditText) findViewById(R.id.pagepath);
codeView=(TextView) findViewById(R.id.codeview);
Button button=(Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String path=pathText.getText().toString();
String html;
try {
html = PageSevice.getHtml(path);
codeView.setText(html);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.error, 1).show();
}
}
});
 
}

效果图:

【Android开发】网络通信之网页源码查看器


 转载请注明原址:http://blog.csdn.net/acmman


读取图片也不难,显示界面稍加改造即可(当然相应的类(ImageSevice)也要写)

Image View imageView =(Image View) findviewbyId(R.id.imageview);

String path=pathText.getText().toString();
byte[] data=ImageSevice.getImage(path);
Bitmap bitmap=BitmapFactory.decodeByteArray(data,0,data.length);
imageView.setImageBitmap(bitmap);//显示图片

上一篇:大数据小视角1:从行存储到RCFile


下一篇:PostgreSQL Replication之第三章 理解即时恢复(4)