ホームページ  >  記事  >  ウェブフロントエンド  >  10_Android の HttpUrlConnection を介してネットワークにアクセスし、ハンドラーとマルチスレッドを使用し、ネットワーク HTML コードを読み取り、インターフェイスに表示し、ScrollView コンポーネント_html/css_WEB-ITnose を使用します。

10_Android の HttpUrlConnection を介してネットワークにアクセスし、ハンドラーとマルチスレッドを使用し、ネットワーク HTML コードを読み取り、インターフェイスに表示し、ScrollView コンポーネント_html/css_WEB-ITnose を使用します。

WBOY
WBOYオリジナル
2016-06-24 11:42:061121ブラウズ

??

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

<インテントフィルター>

< ;action android:name="android.intent.action.MAIN" />

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

< ;LinearLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:orientation="horizo​​ntal">

<テキスト編集

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は以下の通り:

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 }

}

: この記事はブロガーの許可なく、ブロガーによるオリジナル記事です。複製は許可されています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。