android_25_HttpURLConnection

来源:互联网 发布:asp.net mvc4高级编程 编辑:程序博客网 时间:2024/05/22 04:38

效果:


布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.sg31.httpurlconnection.MainActivity"     android:orientation="vertical"    >    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="查看源文件"         android:onClick="getHtmlSourceBtnClicked"        />    <ScrollView         android:layout_width="wrap_content"        android:layout_height="wrap_content"        >    <TextView         android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        /></ScrollView></LinearLayout>


清单文件:(需要权限)

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.sg31.httpurlconnection"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="21" />    // 记得权限       <uses-permission android:name="android.permission.INTERNET"/>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>


代码:


工具类:(流转字符串)

package com.sg31.httpurlconnection;import java.io.ByteArrayOutputStream;import java.io.InputStream;public class TextHelper {public static String getTextFromStream(InputStream is){                byte[] b = new byte[1024];        int len = 0;        //创建字节数组输出流,读取输入流的文本数据时,同步把数据写入数组输出流        ByteArrayOutputStream bos = new ByteArrayOutputStream();        try {            while((len = is.read(b)) != -1){                bos.write(b, 0, len);            }            //把字节数组输出流里的数据转换成字节数组            String text = new String(bos.toByteArray());            return text;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}

主Activity

package com.sg31.httpurlconnection;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import android.support.v7.app.ActionBarActivity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.TextView;public class MainActivity extends ActionBarActivity {Handler handler = new Handler(){// 重写handleMessage方法public void handleMessage(android.os.Message msg) {    TextView tv = (TextView) findViewById(R.id.tv);    tv.setText((String)msg.obj);    }};                @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}public void getHtmlSourceBtnClicked(View v) {Thread t = new Thread() {@Overridepublic void run() {String path = "http://www.sg31.com/app.html";try {URL url = new URL(path);// 获取连接对象,此时还未建立连接HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("GET");conn.setConnectTimeout(5000);conn.setReadTimeout(5000);// 先建立连接,然后获取响应码if (conn.getResponseCode() == 200) {// 拿到服务器返回的输入流,流里的数据就是html的源文件InputStream is = conn.getInputStream();// 从流里把文本数据取出来String text = TextHelper.getTextFromStream(is);// 发送消息,让主线程刷新ui,显示源文件Message msg = handler.obtainMessage();msg.obj = text;handler.sendMessage(msg);}} catch (Exception e) {e.printStackTrace();}}};t.start();}}

























0 0