android 获取网页代码显示TextView中
2017-09-26 19:32
316 查看
package com.example.dfefewweeee;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.style.URLSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.HttpAuthHandler;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private final int REQUESTSUCESS = 0;
private final int REQUESTNOTFOUND = 1;
private final int REQUESTEXCEPTION = 2;
EditText et_path;
TextView tv_reuslt;
//在主线程中定义一个handler
private Handler handler = new Handler(){
//重写方法
public void handleMessage(android.os.Message msg) {
switch(msg.what){
case REQUESTSUCESS:
System.out.println("-*------56565+++-----999--88+65--");
//取数据
String conten = (String) msg.obj;
tv_reuslt.setText(conten);
tv_reuslt.setText(conten);
System.out.println(conten);
break;
case REQUESTNOTFOUND:
Toast.makeText(getApplicationContext(), "请求不存在", 0).show();
break;
case REQUESTEXCEPTION:
Toast.makeText(getApplicationContext(), "服务器忙请稍后...", 0).show();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText)findViewById(R.id.et_path);
tv_reuslt = (TextView)findViewById(R.id.tv_result);
//打印线程名子
System.out.println("线程名字"+Thread.currentThread().getName());
}
//点击事件
public void click(View v){
//创建 一个子线程
new Thread(){public void run(){
try {
//2.1 获取源码
String path = et_path.getText().toString().trim();
//2 创建 url对像
URL url=new URL(path);
//2.3 拿到httpurlconnection对像 用发送或乾接收数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//2.4 设置发送get请求
conn.setRequestMethod("GET"); //get 要求大写, 默认就是get请求
//2.5 设置请求超时时间
conn.setConnectTimeout(50);
//2.6 获取服务返回的状态码
int code = conn.getResponseCode();
//2.7 如果code == 200请求成功
if(code == 200){
//2.8 获取返回的数据 是以流的形式返回的
//把流转换成字符串是一个非常见的操作 所以我由出一个工具类utis
InputStream in = conn.getInputStream();
//调用定义的具类把in转换成String
String content = StreamTools.readStream(in);
//2.9.0创建message对像
Message msg = new Message();
msg.what = REQUESTSUCESS;
msg.obj = content;
//2.9.1 拿着我们创建 的handler(助手) 告诉系统说我要更新ui
//发了一条消息 消息(msg)把数据放到msg里
//handleMessage(android.os.Message msg) 就执行了
handler.dispatchMessage(msg);
//2.9 把流的里面数据展示textView上 更新UI逻辑
//tv_reuslt.setText(content);
}else{
//请求资源不存在 toast是一个view 也不能在线程更新ui
Message msg = new Message();
//代表那条消息
msg.what = REQUESTNOTFOUND;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
//请求资源不存在 toast是一个view 也不能在线程更新ui
Message msg = new Message();
//代表那条消息
msg.what = REQUESTEXCEPTION;
handler.sendMessage(msg); //发消息
}
System.out.println("55555555");
};}.start();
}
}
//获取网页数据转换String
package com.example.dfefewweeee;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTools {
//把一个inpuStream 转换成一个string
public static String readStream(InputStream in) throws Exception{
int len = -1;
//内存输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while((len = in.read(buffer))!= -1){
baos.write(buffer,0,len);
}
String content = new String(baos.toByteArray());
in.close();
return content;
}
}
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.style.URLSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.webkit.HttpAuthHandler;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
private final int REQUESTSUCESS = 0;
private final int REQUESTNOTFOUND = 1;
private final int REQUESTEXCEPTION = 2;
EditText et_path;
TextView tv_reuslt;
//在主线程中定义一个handler
private Handler handler = new Handler(){
//重写方法
public void handleMessage(android.os.Message msg) {
switch(msg.what){
case REQUESTSUCESS:
System.out.println("-*------56565+++-----999--88+65--");
//取数据
String conten = (String) msg.obj;
tv_reuslt.setText(conten);
tv_reuslt.setText(conten);
System.out.println(conten);
break;
case REQUESTNOTFOUND:
Toast.makeText(getApplicationContext(), "请求不存在", 0).show();
break;
case REQUESTEXCEPTION:
Toast.makeText(getApplicationContext(), "服务器忙请稍后...", 0).show();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText)findViewById(R.id.et_path);
tv_reuslt = (TextView)findViewById(R.id.tv_result);
//打印线程名子
System.out.println("线程名字"+Thread.currentThread().getName());
}
//点击事件
public void click(View v){
//创建 一个子线程
new Thread(){public void run(){
try {
//2.1 获取源码
String path = et_path.getText().toString().trim();
//2 创建 url对像
URL url=new URL(path);
//2.3 拿到httpurlconnection对像 用发送或乾接收数据
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//2.4 设置发送get请求
conn.setRequestMethod("GET"); //get 要求大写, 默认就是get请求
//2.5 设置请求超时时间
conn.setConnectTimeout(50);
//2.6 获取服务返回的状态码
int code = conn.getResponseCode();
//2.7 如果code == 200请求成功
if(code == 200){
//2.8 获取返回的数据 是以流的形式返回的
//把流转换成字符串是一个非常见的操作 所以我由出一个工具类utis
InputStream in = conn.getInputStream();
//调用定义的具类把in转换成String
String content = StreamTools.readStream(in);
//2.9.0创建message对像
Message msg = new Message();
msg.what = REQUESTSUCESS;
msg.obj = content;
//2.9.1 拿着我们创建 的handler(助手) 告诉系统说我要更新ui
//发了一条消息 消息(msg)把数据放到msg里
//handleMessage(android.os.Message msg) 就执行了
handler.dispatchMessage(msg);
//2.9 把流的里面数据展示textView上 更新UI逻辑
//tv_reuslt.setText(content);
}else{
//请求资源不存在 toast是一个view 也不能在线程更新ui
Message msg = new Message();
//代表那条消息
msg.what = REQUESTNOTFOUND;
handler.sendMessage(msg);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
//请求资源不存在 toast是一个view 也不能在线程更新ui
Message msg = new Message();
//代表那条消息
msg.what = REQUESTEXCEPTION;
handler.sendMessage(msg); //发消息
}
System.out.println("55555555");
};}.start();
}
}
//获取网页数据转换String
package com.example.dfefewweeee;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTools {
//把一个inpuStream 转换成一个string
public static String readStream(InputStream in) throws Exception{
int len = -1;
//内存输出流
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
while((len = in.read(buffer))!= -1){
baos.write(buffer,0,len);
}
String content = new String(baos.toByteArray());
in.close();
return content;
}
}
相关文章推荐
- Android学习札记47:TextView显示Html类解析的网页和图片及自定义标签
- Android 获取TextView 显示的字符串宽度
- Android textview获取html文字 + 图片显示
- android 获取当前webview显示的网页的源码和网页中框架的源码
- Android开发技巧——TextView加载HTML的图片及代码显示问题
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- Android TextView显示Html类解析的网页和图片及自定义标签用法示例
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- Android TextView重写onMeasure和onDraw显示无拉伸图片(含实现代码链接)
- Android基础教程——在TextView中显示Html 自定义标签,获取标签属性
- Android在TextView中显示html标签以及异步加载网页图片
- Android 获取 TextView 显示的字符串宽度
- android 获取网络数据,回传到本地用TextView显示乱码问题解决方法
- 从网上获取一个网页,在一个TextView中将其源代码显示出来
- android开发之获取一个页面的源代码用一个textview显示出来
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- [Android开发] 代码code设置9.png/9-patch 图片背景后,此view中的TextView等控件显示不正常(常见于listview中)
- android网络获取图片并保存在本地和获取手机SD卡中的图片显示到ImageView上及利用代码删除图片