【Android开发】网络通信之网页源码查看器-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

【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();
}
}
});
 
}

效果图:



 转载请注明原址: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);//显示图片

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章