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
??
编写如下项目:
2 编写Android清单文件
|
3 编写布局文件activity_main.xml
|
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 newString(baos.toByteArray() , charset); // Encode the encoding name after using the original byte array baos.close(); returnhtml; } }
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.
|