package com.itheima28.htmldemo; import java.io.ByteArrayOutputStream; インポート java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity; imポートアンドロイド。 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; 公開 class MainActivity extends アクティビティ { private static final String TAG = "MainActivity"; private static final int SUCCESS = 0; 保護 static final int ERROR = 1; private EditText etUrl; private TextView tvHtml; private ハンドラー handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SUCCESS: tvHtml。 setText((String) msg.obj); break; case エラー: Toast.makeText(MainActivity.this) , "访问失败", 0).show(); ブレーク; デフォルト: ブレーク; } } }; @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 = .getText().toString(); 新しい スレッド(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 { メッセージ msg = new Message(); msg.what = ERROR; handler.sendMessage(ms) g); } } }).start(); } /** * 指定された URL に基づいてネットワークにアクセスし、HTML コードを取得します * @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 (例外 e) { e. printStackTrace(); } return null; } /** *ストリームに基づいて文字列情報を返します *@param is*/ private String getStringFromInputStream(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] バッファ = new byte[1024]; int len = -1; ] html = baos.toString(); // 使用されるエンコーディングは utf-8
です。 文字列 charset = "utf-8" if ( html.contains ("gbk") || html.contains("gb2312") || html.contains("GBK") || gbk が含まれる場合、gb2312エンコード、使用してください gbk エンコードは文字列をエンコードします 使用する 使用する 使用する 使用する 使用する 使用する 使用する 使用する through out through out through out through out through ‐ through ‐ ‐ ‐‐ ‐ to、処理用の配列をエンコードします。最後のエンコーディング名 baos.close(); return } } : この記事はブロガーの許可なく、ブロガーによるオリジナル記事です。複製は許可されています。
|