1. WebView用法

①布局文件新建一个WebView,特别注意线性布局和控件的宽高都要匹配父控件

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/wv_first"

android:layout_width="match_parent"

android:layout_height="match_parent" />

②代码中的配置

private WebView wv_first;

wv_first = (WebView) findViewById(R.id.wv_first);

// getSettings()设置浏览器的属性

// setJavaScriptEnabled(true)让WebView支持JavaScript脚本

wv_first.getSettings().setJavaScriptEnabled(true);

// setWebViewClient(new WebViewClient())

// 这段代码的作用是当我们从一个网页跳转到另外一个网页的时候,目标 // 网页仍然在WebView中显示

// 而不是打开系统浏览器

wv_first.setWebViewClient(new WebViewClient());

//传入网址,打开网页

wv_first.loadUrl("http://www.baidu.com");

③AndroidManifest.xml文件中声明权限

2. 使用HTTP协议访问网络

(1)使用HttpURLConnection

首先学习一个新的控件ScrollView

由于手机屏幕大小有限,而ScrollView允许我们通过滑动查看手机屏幕外的内容

布局文件代码如下:

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/tv_request_text"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

①新建一个按钮点击事件,在按钮点击事件里开启一个子线程,用于访问网络

@Override

public void run() {

URL url;

HttpURLConnection connection;

try {

// 先new出一个URL对象,传入网络地址

// 调用openConnection()方法获取到HttpURLConnection对象

url = new URL("http://www.baidu.com");

connection = (HttpURLConnection) url.openConnection();

// 设置HTTP请求所使用的方法,GET或者POST

// GET表示从服务器获取数据

// POST表示向服务器提交数据

connection.setRequestMethod("GET");

// 下面使一些自由的定制,比如设置连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头

connection.setConnectTimeout(8000);

connection.setReadTimeout(8000);

// 接下来利用输入流对数据进行读取

InputStream is = connection.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is));

StringBuilder response = new StringBuilder();

String line;

while ((line = br.readLine()) != null) {

response.append(line);

}

// 读取数据完毕,接下来将数据传送到Handler进行显示

Message message = new Message();

message.what = SHOW_REQUEST;

message.obj = response.toString();

handler.sendMessage(message);

//最后关闭HTTP连接

connection.disconnect();

} catch (Exception e) {

e.printStackTrace();

}

}

②因为上面代码中是在子线程中,所以不能显示在UI上,所以要用Handler机制将服务器返回的数据传递到主线程进行UI显示,具体实现代码如下:

@Override

public void handleMessage(Message msg) {

if(msg.what==SHOW_REQUEST){

String response=(String) msg.obj;

//在这里进行UI操作将结果显示到UI上

tv_request_text.setText(response);

}

}

③AndroidManifest.xml文件中声明权限

④主Activity中的代码如下

// Handler用来处理网络访问请求之后得到数据的显示

MyHandler handler = new MyHandler(tv_request_text);

// 创建访问网络的线程对象

final SendHttpRequestThread request = new SendHttpRequestThread(handler);

// 设置按钮点击事件

btn_request.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 开启线程

request.start();

}

});

(2)使用HTTPClient

①布局文件不变,开启的线程内的代码改为如下:

@Override

public void run() {

// 因为HttpClient是一个接口,所以无法直接创建它的对象,一般是用

HttpClient client = new DefaultHttpClient();

// 想要发起一条GET请求就创建一个HttpGet对象

// 并传入目标网络地址,调用HttpClient的execute()方法传入HttpGet对象

HttpGet httpGet = new HttpGet("http://www.baidu.com");

try {

// 执行execute()方法后会返回HttpResponse对象,服务器返回的所有信息就包含在这里面了

HttpResponse response = client.execute(httpGet);

// 接下来取出服务器返回的状态码,如果是200就说明请求和响应都成功了

if (response.getStatusLine().getStatusCode() == 200) {

// 请求和响应都成功了,取出返回的具体内容

// response的getEntity()得到一个HttpEntity对象

// EntityUtils这个工具类的toString()方法将得到的内容转化成字符串

// 传入"utf-8"的目的是在服务器返回中文的时候防止乱码

HttpEntity entity = response.getEntity();

String responsetext = EntityUtils.toString(entity, "utf-8");

// 接下来将数据传送到Handler进行显示

Message message = new Message();

message.what = SHOW_REQUEST;

message.obj = responsetext;

handler.sendMessage(message);

}

} catch (Exception e) {

e.printStackTrace();

}

}

②AndroidManifest.xml文件中声明权限

③主Activity中的代码如下

// Handler用来处理网络访问请求之后得到数据的显示

MyHandler handler = new MyHandler(tv_request_text);

//创建HttpCliect访问网络的线程对象

final SendClientRequestThread requestThread=new SendClientRequestThread(handler);

// 设置按钮点击事件

btn_request.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 开启线程

requestThread.start();

}

});

3. 下载Apache阿帕奇搭建Web服务器

(1) 安装环境

系统:windows 10 x86

Apache版本:Apache 2.4.29

(2) Apache的下载

第一步:

登录http://httpd.apache.org/download.cgi 这个地址,2.4.16 ,如下图位置:

第二步:

进入如下界面后,选择第一项ApacheHaus,这是个第三方下载平台,在它的网站下载独立的Apache会是一个压缩包另外四个中,第二个也是独立的Apache下载地址,另外三个是集成开发环境。我这里选的第一个。

第三步:

在新的界面中,会发现VC9和VC11和VC14字样,通过阅读相关内容得知用VS2014编译的无法在windows xp和server 2003中使用。算是为了兼容性好点吧,我这里选的用VC14编译的64位Apache,选择下载至此,下载过程完成!

三.安装

安装过程很简单,因为是压缩包,所以,先将其解压包中的 Apache24 解压到合适的位置

4. 配置httpd.conf文件

找到F:\Apache\httpd-2.4.29-o102n-x86-vc14-r2\Apache24\conf文件,用Notepad++打开,因为Notepad++是比较万能的记事本软件,所以用他打开,并且记住行号,以便于下次查找,找到:Define SRVROOT 这一项,将其右方的值改为,当前你Apache安装存放的目录地址,如下所示

apache的默认端口是80,如果发现被占用了,修改httpd.conf的如下选项,如下所示

5. 安装Apache的主服务

温馨提示:一定要以管理员身份运行,不然会报错

以管理员的身份运行cmd命令(左下角搜索框搜索命令行,右键以管理员模式打开,F:进入指定盘符,cd..进入指定目录文件),进入apache的bin目录,执行如下命令

httpd.exe -k install -n androidapache

该命令的意思是,安装apache服务,并将该服务名称命名为androidapache(你也可以改成别的),回车。

如下所示

6. 启动apache服务

在安装目录中,找到\bin\ApacheMonitor.exe可执行文件,双击运行,桌面右下角会出现图标,双击打开窗口界面,会看到如图所示:

点击start,完成apache的启动,在浏览器中输入http://localhost:80,出现如下界面,启动成功

7. Apahe服务的卸载

若Apache服务器软件不想用了,想要卸载,需要先卸载apache服务(切记,若直接删除安装路径的文件夹,会有残余文件在电脑,可能会造成不必要的麻烦)

在CMD命令窗口,输入如下(建议先停止服务再删除):

sc delete apache

apache是Apache服务器的服务名

*********重点来了**************

①以上是Apache搭建的过程,搭建完成后,我们需要用它创建我们自己的网页

②进入到Apache的安装目录的\htdoc目录下创建一个data.html文件(自定义),随便 输入一些内容

③在浏览器中访问http://127.0.0.1/data.xml

特别注意:127.0.0.1访问的本机服务器的ip地址,要想让别人访问这个服务器,必须先查看自己电脑的本机ip,然后将127.0.0.1换成这个ip地址

这样设置之后就可以直接用上面的TTTP访问网络的方法直接得到数据

了解更多技术文章,欢迎关注我的个人公众号

标签:message,网络,如下,apache,开发,Apache,new,Android,response

来源: https://www.cnblogs.com/yuzhou1234/p/12536493.html

android 无网络处理布局,Android网络开发相关推荐

  1. android中九宫格的布局,Android布局--九宫格示例.doc

    Android布局--九宫格示例.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. ...

  2. android studio制作目录布局,Android Studio:新创建的目录未出现在文件夹Vi中

    9个解决方案 136 votes 事实证明,顶部有一个选择器,默认设置为显示Android. 如果您将切换按钮向下拨到"包",您可以看到自己的包. Aggressor answer ...

  3. android获取其他app布局,android - 如何从App的(布局)XML变量中获取Manifest版本号?...

    android - 如何从App的(布局)XML变量中获取Manifest版本号? 我想有一种方法在代码的主要部分引用项目的清单版本号. 到目前为止我一直在做的是将String XML文件中的版本号链 ...

  4. android编程多组件布局,Android把多个控件定义成一个整体的布局类使用

    在程序中有时候几个控件要放在一起,想随意放在布局上,而且不仅一个布局要使用,此时就想把这几个控件定义成一个新的View就好了,于是就有了下面这个类新的控件类SeekBarGroup.java,Seek ...

  5. android仿微信充值布局,Android 高仿微信支付数字键盘功能

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...

  6. android recyclerview流式布局,Android FlexboxLayout流式布局

    Android FlexboxLayout流式布局 FlexBoxLayout是为Android带来了与 CSS Flexible Box Layout(CSS 弹性盒子)相似功能的库. 一:添加依赖 ...

  7. Android怎么自定义listview布局,android – 如何将listView标头添加为自定义布局

    我想在listView中添加标题我尝试这样我在这里缺少的ids很好. 我在片段中使用它. ListView lv; LinearLayout header = (LinearLayout) rootV ...

  8. android仿微博首页布局,Android仿微博首页Tab加号弹窗功能

    本文实例为大家分享了Android微博首页Tab加号弹窗展示的具体代码,供大家参考,具体内容如下 Activity部分的代码 package com.ting.tab; import android. ...

  9. android gdx 放进布局,Android - 将LibGDX项目放入Anroid App项目

    我正在使用Android Studio ,我该如何将LibGDX项目放入Android App项目中(不是将Android App项目放入LibGDX项目中)? 这是将libGDX模块导入Androi ...

最新文章

  1. 计算机CAD作文,【2人回答】职校课堂里我最喜欢上CAD课600字作文-3D溜溜网
  2. flutter集成到原生工程
  3. SNMP、MIB、OID概念的理解
  4. 操作系统-命令解释程序(实验一)
  5. 引用 病毒是怎么命名的?教你认识病毒命名规则
  6. 搭建vue-cli脚手架
  7. oracle查询结果展示,ORACLE构造查询日期展示结果
  8. linux7dhcpd服务命令,CentOS7系统架设DHCP服务
  9. IDEA常用的搜索快捷键
  10. mindoc源码编译和部署
  11. html 中表格的拆分合并
  12. Java多线程之----CyclicBarrier
  13. oracle 数据库网络传输,Oracle数据库之间数据传输方法探讨
  14. python爬取百部电影数据,我分析出了一个残酷的真相
  15. 什么是mysql 中级工程师的理解
  16. DC综合——学习笔记
  17. PowerBI-日期和时间函数-WEEKDAY\WEEKNUM
  18. 客服常用话术大全,赶紧收藏起来吧!
  19. 流式布局FlowLayout支持行数控制,单选,多选,点击等操作
  20. disk2vhd系统转换成虚拟镜像工具

热门文章

  1. java实现代理服务器,接收客户端连接,发送到对应服务器
  2. java调整图片透明度
  3. matlab2c使用c++实现matlab函数系列教程-binostat函数
  4. PHP对内存的运行,在PHP中运行密集的批处理过程,并避免内存耗尽
  5. .Net Core中使用ref和SpanT提高程序性能
  6. Testing a React+Redux web application
  7. 【Python】Scrapy入门实例
  8. 软件工程个人作业12
  9. iOS 深拷贝、浅拷贝、自定义对象拷贝简介
  10. Visual Studio 2013中因Browser Link引起的Javascript错误