android:minSdkVersion="8"android:targetSdkVersion="19" />android:allowBackup="true"android"> 跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

10_Android中通过HttpUrlConnection访问网络,Handler和多线程使用,读取网络html代码并显示在界面上,ScrollView组件的使用_html/css_WEB-ITnose

??

编写如下项目:

2 编写Android清单文件立即学习“前端免费学习笔记(深入)”;package="com.itheima28.htmldemo"android:versionCode="1"android:versionName="1.0" >android:minSdkVersion="8"android:targetSdkVersion="19" />android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" >android:name="com.itheima28.htmldemo.MainActivity"android:label="@string/app_name" >3 编写布局文件activity_main.xml xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity" >android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal">android:id="@+id/et_url"android:layout_width="0dip"android:text="http://www.baidu.com"android:layout_height="wrap_content"android:singleLine="true"android:layout_weight="1"/>android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="getHtml"android:text="GO"/>android:layout_width="fill_parent"android:layout_height="fill_parent">android:id="@+id/tv_html"android:layout_width="fill_parent"android:layout_height="fill_parent"/>4 编写Activity的类MainActivity如下:packagecom.itheima28.htmldemo;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.URL;importandroid.app.Activity;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.text.TextUtils;importandroid.util.Log;importandroid.view.View;importandroid.widget.EditText;importandroid.widget.TextView;importandroid.widget.Toast;publicclassMainActivityextendsActivity {privatestaticfinalString TAG = "MainActivity";privatestaticfinalintSUCCESS = 0;protectedstaticfinalintERROR = 1;privateEditText etUrl;privateTextView tvHtml;privateHandler handler =newHandler() {@OverridepublicvoidhandleMessage(Message msg) {super.handleMessage(msg);switch(msg.what) {caseSUCCESS:tvHtml.setText((String) msg.obj);break;caseERROR:Toast.makeText(MainActivity.this, "访问失败", 0).show();break;default:break;}}};@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);etUrl = (EditText) findViewById(R.id.et_url);tvHtml = (TextView) findViewById(R.id.tv_html);}publicvoidgetHtml(View v) {finalString url = etUrl.getText().toString();newThread(newRunnable() {@Overridepublicvoidrun() {// 请求网络String html = getHtmlFromInternet(url);if(!TextUtils.isEmpty(html)) {// 更新textview的显示了Message msg =newMessage();msg.what = SUCCESS;msg.obj = html;handler.sendMessage(msg);}else{Message msg =newMessage();msg.what = ERROR;handler.sendMessage(msg);}}}).start();}/*** 根据给定的url访问网络, 抓去html代码*@paramurl*@return*/protectedString getHtmlFromInternet(String url) {try{URL mURL =newURL(url);HttpURLConnection conn = (HttpURLConnection) mURL.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(10000);conn.setReadTimeout(5000);//         conn.connect();intresponseCode = conn.getResponseCode();if(responseCode == 200) {InputStream is = conn.getInputStream();String html = getStringFromInputStream(is);returnhtml;}else{Log.i(TAG, "访问失败: " + responseCode);}}catch(Exception e) {e.printStackTrace();}returnnull;}/*** 根据流返回一个字符串信息*@paramis*@return*@throwsIOException*/privateString getStringFromInputStream(InputStream is)throwsIOException {ByteArrayOutputStream baos =newByteArrayOutputStream();byte[] buffer =newbyte[1024];intlen = -1;while((len = is.read(buffer)) != -1) {baos.write(buffer, 0, len);}is.close();String html = baos.toString();  // 把流中的数据转换成字符串, 采用的编码是: utf-8String charset = "utf-8";if(html.contains("gbk") || html.contains("gb2312")|| html.contains("GBK") || html.contains("GB2312")) {       // 如果包含gbk, gb2312编码, 就采用gbk编码进行对字符串编码charset = "gbk";}html =newString(baos.toByteArray(), charset);  // 对原有的字节数组进行使用处理后的编码名称进行编码baos.close();returnhtml;}}版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章