首页 > 代码库 > (十三)网络html查看器
(十三)网络html查看器
一:此节的重点部分:如何把输入流的数据转化为字符串功能的实现,详情见五:StreamTools.java。注意:访问网络一定要加权限: <uses-permission android:name="android.permission.INTERNET" />
功能需求:在EditText输入网址,点击浏览将可以查看到一个网页的html文件。程序运行结果如下所示:
二:整个程序的结构图如下所示:
三、activity_main.xml文件的具体代码如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.htmlview.MainActivity" > <EditText android:id="@+id/et_path" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="请输入网址" android:text="http://www.cnblogs.com/fuyanan/p/4080201.html" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:onClick="click" android:text="浏览" /> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tv_content" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </ScrollView></LinearLayout>
四、MainActivity.java代码如下所示:
package com.example.htmlview;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import com.example.htmlview.utils.StreamTools;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.TextUtils;import android.util.Log;import android.view.View;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {protected static final int ERROR = 1;protected static final int SHOW_TEXT = 2;protected static final String TAG = "MainActivityHtml";private EditText et_path;private TextView tv_content;private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case ERROR: Toast.makeText(MainActivity.this, "获取网络资源失败", 1).show(); break; case SHOW_TEXT: tv_content.setText((CharSequence) msg.obj); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_path=(EditText)findViewById(R.id.et_path); tv_content=(TextView)findViewById(R.id.tv_content); } public void click(View view){ final String path=et_path.getText().toString().trim(); if(TextUtils.isEmpty(path)){ Toast.makeText(this, "网络地址不能为空", 1).show(); return; }else{ new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { URL url=new URL(path); Log.i(TAG, "getResponseCode"+ url); HttpURLConnection conn=(HttpURLConnection)url.openConnection(); Log.i(TAG, "getResponseCode"); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); int code=conn.getResponseCode(); if(code==200){ InputStream is=conn.getInputStream(); //得到服务器端返回来的输入流 String result=StreamTools.ReadInputStream(is); Message msg=new Message(); msg.what=SHOW_TEXT; msg.obj=result; handler.sendMessage(msg); }else{ Log.i(TAG, "code != 200"); Message msg=new Message(); msg.what=ERROR; handler.sendMessage(msg); } } catch (Exception e) { // TODO Auto-generated catch block Log.i(TAG, "Exception"); e.printStackTrace(); Message msg=new Message(); msg.what=ERROR; handler.sendMessage(msg); } } }).start(); } }}
五、StreamTools.java文件
package com.example.htmlview.utils;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.nio.ByteOrder;public class StreamTools { /** * 把输入流的数据转化为字符串 * * @param is * 输入流 * @return 字符串 */ public static String ReadInputStream(InputStream is) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int len = 0; byte[] buffer = new byte[1024]; while ((len = is.read(buffer)) != -1) { baos.write(buffer, 0, len); } is.close(); baos.close(); byte[] result = baos.toByteArray(); return new String(result); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); return "将输入流转化为字符串失败"; } }}
(十三)网络html查看器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。