Home  >  Article  >  Web Front-end  >  10_Access the network through HttpUrlConnection in Android, use Handler and multi-threading, read network html code and display it on the interface, use of ScrollView component_html/css_WEB-ITnose

10_Access the network through HttpUrlConnection in Android, use Handler and multi-threading, read network html code and display it on the interface, use of ScrollView component_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:42:061122browse

??

  1. 编写如下项目:

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" >

           

               

 

               

           

       

   

 

<🎜>    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"/>

       

       

<🎜>    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"/>                

4 编写Activity的类MainActivity如下:

package com.itheima28.htmldemo;

 

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.URL;

 

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 {

 

    private static final String TAG = "MainActivity";

    private static final int SUCCESS = 0;

    protected static final int ERROR = 1;

    private EditText etUrl;

    private TextView tvHtml;

   

    private Handler handler = new Handler() {

 

       @Override

       public void handleMessage(Message msg) {

           super.handleMessage(msg);

           switch (msg.what) {

           case SUCCESS:

               tvHtml.setText((String) msg.obj);

              break;

           case ERROR:

              Toast.makeText(MainActivity.this, "访问失败", 0).show();

              break;

           default:

              break;

           }

       }

      

    };

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.activity_main);

      

       etUrl = (EditText) findViewById(R.id.et_url);

       tvHtml = (TextView) findViewById(R.id.tv_html);

      

    }

 

    public void getHtml(View v) {

       final String url = etUrl.getText().toString();

      

       new Thread(new Runnable() {

          

           @Override

           public void run() {

              // 请求网络

              String html = getHtmlFromInternet(url);

             

              if(!TextUtils.isEmpty(html)) {

                  // 更新textview的显示了

                  Message msg = new Message();

                  msg.what = SUCCESS;

                  msg.obj = html;

                  handler.sendMessage(msg);

              } else {

                  Message msg = new Message();

                  msg.what = ERROR;

                  handler.sendMessage(msg);

              }

           }

       }).start();

    }

 

    /**

* Access the network based on the given url and grab the html code

* @param url

* @return

*/

    protected String getHtmlFromInternet(String url) {

      

       try {

           URL mURL = new URL(url);

           HttpURLConnection conn = (HttpURLConnection) mURL.openConnection();

          

           conn.setRequestMethod("GET");

           conn.setConnectTimeout(10000);

           conn.setReadTimeout(5000);

          

//         conn.connect();

          

           int responseCode = conn.getResponseCode();

          

           if(responseCode == 200) {

              InputStream is = conn.getInputStream();

              String html = getStringFromInputStream(is);

              return html;

           } else {

              Log.i(TAG, "访问失败: " responseCode);

           }

       } catch (Exception e) {

           e.printStackTrace();

       }

       return null;

    }

   

    /**

* Return a string information according to the stream

* @param is

* @return

* @throws IOException

*/

    private String getStringFromInputStream(InputStream is) throws IOException {

       ByteArrayOutputStream baos = new ByteArrayOutputStream();

       byte[] buffer = new byte[1024];

       int len = -1;

      

                                                                                                                                                                           } is.close();

: utf-8

                                                                                                                                             .contains("gb2312")

|| html.contains("GBK") || html.contains("GB2312")) { // If it contains gbk, gb2312 encoding, use gbk encoding for comparison String encoding

charset = "gbk";

}

html

new

String(baos.toByteArray() , charset); // Encode the encoding name after using the original byte array

baos.close();    

return

html;

}

}

Copyright statement: This article is an original article by the blogger and has not been authorized by the blogger. No reproduction allowed with permission of the owner.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn