1 该项目的主要功能就是从将后台的html网页在Android的界面上显示出来

后台就是建立一个java web工程在工程尚建立一个html或者jsp文件就可以了,这里主要看Android客户端的程序

xml文件:

<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:orientation="vertical"
tools:context="application.weiyuan.com.lihuoming_24.MainActivity"> <TextView
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="从网页获得html源码的显示" /> <Button
android:id="@+id/btn_main_download"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点击下载"/> <ScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_main_html"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</ScrollView> </LinearLayout>

上面需要注意的是采用ScrollView包裹TextView,因为后台返回的html的内容很多,可以让TextView滚动起来

业务类的操作代码是:

public class HtmlBussiess {
public static String getHtml(String path) throws Exception {
URL url = new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
openConnection.setConnectTimeout(5000);
openConnection.setRequestMethod("GET"); //采用get的请求方式
openConnection.connect();
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
InputStream inputStream = null;
if(openConnection.getResponseCode() == 200){
inputStream = openConnection.getInputStream();
byte[] buffer = new byte[1024]; int len = -1;
while ((len = inputStream.read(buffer)) != -1){
outputStream.write(buffer,0,len);
}
}
inputStream.close();
return new String(outputStream.toByteArray(),"utf-8");//这里的编码方式必须和后台的html编码方式一样
}
}

activity控制层的代码是:

public class MainActivity extends Activity {

    private TextView tv_main_html;
private Button btn_main_download;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initListener();
} private void initListener() {
btn_main_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ExecutorService executorService = Executors.newCachedThreadPool();
executorService.execute(new Runnable() {
@Override
public void run() {
String path = "http://192.168.1.103:8080/lihuoming_23/hello.jsp";//myeclpise建立的工程
try {
final String html = HtmlBussiess.getHtml(path);
runOnUiThread(new Runnable() {
@Override
public void run() {
tv_main_html.setText(html);
}
}); } catch (final Exception e) {
e.printStackTrace();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "图片下载失败" + e.toString(),
Toast.LENGTH_LONG).show();
}
});
;
}
}
}); }
});
} private void initView() {
tv_main_html = (TextView) findViewById(R.id.tv_main_html);
btn_main_download = (Button) findViewById(R.id.btn_main_download);
}
}

黎活明8天快速掌握android视频教程--24_网络通信之网页源码查看器的更多相关文章

  1. 黎活明8天快速掌握android视频教程--25_网络通信之资讯客户端

    1 该项目的主要功能是:后台通过xml或者json格式返回后台的视频资讯,然后Android客户端界面显示出来 首先后台新建立一个java web后台 采用mvc的框架 所以的servlet都放在se ...

  2. 黎活明8天快速掌握android视频教程--23_网络通信之网络图片查看器

    1.首先新建立一个java web项目的工程.使用的是myeclipe开发软件 图片的下载路径是http://192.168.1.103:8080/lihuoming_23/3.png 当前手机和电脑 ...

  3. 黎活明8天快速掌握android视频教程--27_网络通信之通过GET和POST方式提交参数给web应用

    1该项目主要实现Android客户端以get的方式或者post的方式向java web服务器提交参数 Android客户端通过get方式或者post方式将参数提交给后台服务器,后台服务器对收到的参数进 ...

  4. 黎活明8天快速掌握android视频教程--22_访问通信录中的联系人和添加联系人

    Android系统中联系人的通讯录的contentProvide是一个单独的apk,显示在界面的contact也是一个独立的apk,联系人apk通过contentProvide访问底层的数据库. 现在 ...

  5. 黎活明8天快速掌握android视频教程--21_监听ContentProvider中数据的变化

    采用ContentProvider除了可以让其他应用访问当前的app的数据之外,还有可以实现当app的数据发送变化的时候,通知注册了数据变化通知的调用者 其他所有的代码都和第20讲的一样,不同的地方看 ...

  6. 黎活明8天快速掌握android视频教程--20_采用ContentProvider对外共享数据

    1.内容提供者是让当前的app的数据可以让其他应用访问,其他应该可以通过内容提供者访问当前app的数据库 contentProvider的主要目的是提供一个开发的接口,让其他的应该能够访问当前应用的数 ...

  7. 黎活明8天快速掌握android视频教程--19_采用ListView实现数据列表显示

    1.首先整个程序也是采用mvc的框架 DbOpenHelper 类 package dB; import android.content.Context; import android.databas ...

  8. 黎活明8天快速掌握android视频教程--17_创建数据库与完成数据添删改查

    1.我们首先来看下整个项目 项目也是采用mvc的框架 package dB; import android.content.Context; import android.database.sqlit ...

  9. 黎活明8天快速掌握android视频教程--16_采用SharedPreferences保存用户偏好设置参数

    SharedPreferences保存的数据是xml格式,也是存在数据保存的下面四种权限: 我们来看看 我们来看看具体的业务操作类: /** * 文件名:SharedPrecences.java * ...

随机推荐

  1. 【书签】连续型特征的归一化和离散特征的one-hot编码

    1. 连续型特征的常用的归一化方法.离散型特征one-hot编码的意义 2. 度量特征之间的相关性:余弦相似度和皮尔逊相关系数

  2. 【Python】基础总结

    输入 input("提示性信息") 如: input("请输入数字") 评估函数 因为 Python 没有特别人为规定数据类型,数据类型是由计算机进行判定,所以 ...

  3. parrot os安装vmware pro

    转载https://www.linuxtechi.com/install-vmware-workstation-14-debian-9/ Open the terminal and execute t ...

  4. JS代码静态分析及挖掘

    JavaScript 已经成为现代 Web 浏览器开发中最普遍的技术之一.使用客户端 JavaScript 框架(如 AngularJS,ReactJS 和 Vue.js)构建的应用程序已向前端输送了 ...

  5. 认证(Authentication)和授权(Authorization)总结

    身份认证是验证你的身份,一旦通过验证,即启用授权.你所拥有的身份可以进行哪些操作都是由授权规定.例如,任何银行客户都可以创建一个账户(如用户名),并使用该账户登录该银行的网上服务,但银行的授权政策必须 ...

  6. Netty源码学习系列之2-ServerBootstrap的初始化

    前言 根据前文我们知道,NioEventLoopGroup和NioEventLoop是netty对Reactor线程模型的实现,而本文要说的ServerBootstrap是对上面二者的整合与调用,是一 ...

  7. Java实现 LeetCode 826 安排工作以达到最大收益(暴力DP)

    826. 安排工作以达到最大收益 有一些工作:difficulty[i] 表示第i个工作的难度,profit[i]表示第i个工作的收益. 现在我们有一些工人.worker[i]是第i个工人的能力,即该 ...

  8. (Java实现) 洛谷 P1091合唱队形

    题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2,-,K,他们的身 ...

  9. Java实现 蓝桥杯VIP 算法提高 3-3求圆面积表面积体积

    算法提高 3-3求圆面积表面积体积 时间限制:1.0s 内存限制:256.0MB 问题描述 接受用户输⼊的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415 ...

  10. java实现第六届蓝桥杯四阶幻方

    四阶幻方 把1~16的数字填入4x4的方格中,使得行.列以 及两个对角线的和都相等,满足这样的特征时称 为:四阶幻方. 四阶幻方可能有很多方案.如果固定左上角为1 ,请计算一共有多少种方案. 比如: ...