1. WebView用法

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

<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" ><WebViewandroid:id="@+id/wv_first"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

②代码中的配置

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文件中声明权限

<uses-permission android:name="android.permission.INTERNET"/>

2. 使用HTTP协议访问网络

(1)使用HttpURLConnection

首先学习一个新的控件ScrollView 由于手机屏幕大小有限,而ScrollView允许我们通过滑动查看手机屏幕外的内容 布局文件代码如下:

<ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent" ><TextViewandroid:id="@+id/tv_request_text"android:layout_width="match_parent"android:layout_height="wrap_content" /></ScrollView>

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

@Overridepublic 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显示,具体实现代码如下:

@Overridepublic void handleMessage(Message msg) {if(msg.what==SHOW_REQUEST){String response=(String) msg.obj;//在这里进行UI操作将结果显示到UI上tv_request_text.setText(response);}}

③AndroidManifest.xml文件中声明权限

<uses-permission android:name="android.permission.INTERNET"/>

④主Activity中的代码如下

// Handler用来处理网络访问请求之后得到数据的显示MyHandler handler = new MyHandler(tv_request_text);// 创建访问网络的线程对象final SendHttpRequestThread request = new SendHttpRequestThread(handler);// 设置按钮点击事件btn_request.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 开启线程request.start();}});

(2)使用HTTPClient

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

@Overridepublic 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() {@Overridepublic 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访问网络的方法直接得到数据

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

Android网络开发相关推荐

  1. 三、Android网络开发

    传送门 <一.Android Studio的安装和使用> <二.Android界面开发> <三.Android网络开发> <四.狗狗大全应用实战> 视频 ...

  2. Android网络开发技术实战详解

    <Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...

  3. 《Android 网络开发与应用实战详解》——1.3节搭建Android应用开发环境

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第1章,第1.3节搭建Android应用开发环境,作者 王东华,更多章节内容可以访问云栖社区"异步社区&qu ...

  4. 《Android 网络开发与应用实战详解》——2.3节Android系统架构

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.3节Android系统架构,作者 王东华,更多章节内容可以访问云栖社区"异步社区"公 ...

  5. 《Android 网络开发与应用实战详解》——2.1节简析Android安装文件

    本节书摘来自异步社区<Android 网络开发与应用实战详解>一书中的第2章,第2.1节简析Android安装文件,作者 王东华,更多章节内容可以访问云栖社区"异步社区" ...

  6. android 网络开发相关资料

    网络编程汇总: 1. http 基础知识和编程 http://www.jianshu.com/p/99dc1f8f62bf 2. socket  udp  tcp 区别与联系 http://jingy ...

  7. android 无网络处理布局,Android网络开发

    1. WebView用法 ①布局文件新建一个WebView,特别注意线性布局和控件的宽高都要匹配父控件 xmlns:tools="http://schemas.android.com/too ...

  8. Android网络开发(一、Socket通信HTTP通信)

    一.Socket通信   Socket:即套接字,其本身并不是一种通信协议,它是封装了TCP/IP.UDP 协议的API实现.在创建Socket对象后,底层会完成TCP/IP的三次握手等(UDP协议对 ...

  9. android 网络开发

    反复研究了 Android Market,总结一下,之前发在新浪微博上,但不够详细,主要是提高用户体验. 1.网络异常处理,重试机制. 上wifi常常网络断开,那就看运用程序是否健壮.可以用Andro ...

最新文章

  1. Python 爬虫框架Scrapy安装汇总
  2. debug.keystore not found for signing config 'debug'.
  3. Linux-TCP/IP TIME_WAIT状态原理
  4. (进阶篇)Cookie与 Session使用详解
  5. xss防御方法base64_XSS 防御方法总结
  6. DeepWalk 和 Node2Vec
  7. mac 安装 python 配置||虚拟环境
  8. fdopen()和fileno()函数
  9. Libra教程之:move语言的特点和例子
  10. r语言 断轴 画图_R语言作图——Density plot
  11. 数据结构与算法--解决问题的方法-顺时针打印矩阵
  12. OpenBSD同步时间
  13. 计算机关闭提示音,即将发布:如何关闭Apple计算机启动提示音
  14. 软件程序设计中的N-S图、PAD图、程序流程图、E-R图
  15. urllib库(三)parse模块:quote()/quote_plus(),unquote()/unquote_plus(),quote_from_bytes()
  16. Hadoop3.2.0 Web应用程序代理
  17. ConcurrentHashMap插入与遍历时出现混乱
  18. python again_It’s really(wonder)________ to see you here again in Beijing.
  19. js判断是否是联通手机号
  20. 没及格,我猜这套华为软件测试面试题没几个人能及格

热门文章

  1. html怎么改变图片整体大小,css怎么改变图片大小?
  2. sea新浪云计算机平台,新浪云计算SAE免费申请使用及域名绑定
  3. (轉貼) 太空探索/液態水存在?火星南極有廣大冰層 可能有生命 (News)
  4. 信号完整性与电源完整性分析 第三版 pdf_信号完整性揭秘于博士SI设计手记高清PDF分享...
  5. 输出一个菱形星星图案
  6. 基于JNA(Java Native Access)实现RFID单卡、多卡读取以及写入。
  7. 使用frp配置内网访问(穿透)教程(超详细,简单)
  8. 珠海网站建设需要多少钱?
  9. windows 组播收不到消息_只需2步,轻松解决登录微信电脑版后,手机收不到消息提醒的问题...
  10. 计算机音乐作曲专业,计算机音乐创作专业组