关闭

android 获取网页代码显示TextView中

标签: android
175人阅读 评论(0) 收藏 举报
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;

}


}

0
0
查看评论

Android中实现TextView超链接五种方式

一共有五种方式:推荐第四种、第五种 1. 直接在xml文件中配置autoLink属性(简单易用,效果单一) autoLink属性一共有六个值,分别是none(正常),web(将文本识别为一个网址),phone(将文本识别为一个电话号码),mail(将文本识别为一个邮件地址),map(这个,呃,该怎么...
  • lyankj
  • lyankj
  • 2016-07-11 17:04
  • 6742

Android在TextView中显示html标签以及异步加载网页图片

一、外部调用方法TextView contentTv = (TextView)v.findViewById(R.id.itemTextView); //默认图片,无图片或没加载完显示此图片 Drawable defaultDrawable = getResources...
  • chenzheng8975
  • chenzheng8975
  • 2017-04-25 08:26
  • 496

android的TextView中显示url

一、在Layout文件中设置TextView的属性 [html] view plain copy android:autoLink="email|phone|web"   这样Andro...
  • xbw12138
  • xbw12138
  • 2016-06-30 18:05
  • 11433

android textview 中url识别

android5.0+中对textview中的url识别可能不会是自己想要的结果。例如它会将1.###识别为url。可能它的本意是对baidu.com支持,导致一些我们不能接受的结果。 没有好的办法,只能自己处理了。 首先检索出textview内容中的url: public List getU...
  • Helius_Sun
  • Helius_Sun
  • 2015-09-10 20:23
  • 4505

Android TextView中显示图片的4种方式

我们知道,TextView控件一般是用来显示文本的,而图片一般是用ImageView控件来显示。那TextView能否显示图片呢?答案是肯定的!下面列出常见的4种方式。
  • hwe_xc
  • hwe_xc
  • 2016-03-17 11:28
  • 16910

android开发之获取一个页面的源代码用一个textview显示出来

今天面魅族科技的一个题目,但是想使用httpclient来实现,现在想想太过于麻烦了 除此之外还问了一个如何设置主题和如何实现动画、多线程等问题,答得并不是很好。 下面贴源码,比较简单。 注意不要在UI线程内添加复杂的操作,因此需要使用一个新的线程实现获取页面源码的功能,然后利用字节流将其写入。 ...
  • spanklebobo
  • spanklebobo
  • 2017-10-30 21:19
  • 150

程序中动态更改TextView显示内容并获取res的字符串

以上几个程序都是在main.xml或string.xml或程序中直接设置显示内容 下面这个例子是获取res 字符串内容 (程序可以根据原始串值更改显示内容) activity 内容 private TextView mTextView02;     ...
  • danfeixia
  • danfeixia
  • 2014-05-11 04:43
  • 1909

android textview 中url识别

android5.0+中对textview中的url识别可能不会是自己想要的结果。例如它会将1.###识别为url。可能它的本意是对baidu.com支持,导致一些我们不能接受的结果。 没有好的办法,只能自己处理了。 首先检索出textview内容中的url: public List getU...
  • Helius_Sun
  • Helius_Sun
  • 2015-09-10 20:23
  • 4505

android文本组件textView属性autolink设置为web,显示网址的处理方法

/** 匹配网址正则表达式*/ private static final String TOP_LEVEL_DOMAIN_STR_FOR_WEB_URL = "(?:" + "(?:aero|arpa|asia|a[cdefgilmn...
  • hehui729273751
  • hehui729273751
  • 2012-06-14 10:53
  • 1301

Android中Textview显示带html文本

Textview显示“img”标签,也许看到这里,大家都会想到就是构建ImageGetter,重载一下其 public Drawable getDrawable(String source)方法,获取该路径的图片。 例如: final Html.ImageGetter...
  • taotao19880301
  • taotao19880301
  • 2014-01-16 16:42
  • 1229
    个人资料
    • 访问:1056次
    • 积分:80
    • 等级:
    • 排名:千里之外
    • 原创:0篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档