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
- android_25_HttpURLConnection
- 新手请教 xxxContainer.cpp 与 xxxContainerView.cpp
- J2ME Vector元素转换为int 问题
- poj2549 Sumsets双向搜索
- 如何屏蔽控件的按键响应
- 请推荐几个好的关于BREW开发的网站,谢谢!
- android_25_HttpURLConnection
- 编译OK,,但是运行保持,怎么回事呀?
- 数据可视化matplotlib的应用(四)
- Ubuntu 14.04 64bit 安装Caffe(GPU版本)--台式机(笔记本请绕道)
- 求一个手机上的飞机小游戏
- (一)Centos7下 Tengine安装和配置
- Linux下C语言连接MySQL
- dvwa文件包含漏洞和远程文件利用漏洞
- [Java 8] (1) 函数式编程简介