handler和网络访问(2018年01月03日)

2018.1.3

1、回顾线程、handler

【案例】

项目结构

activity_main.xml

MainActivity.java

 

测试:

2、如何进行网络访问?

android开发框架访问网络主要依赖:

1java.net包针对网络访问

2java.io包针对数据访问(输入和输出)

3java.nio包用于数据访问(输入和输出)

4org.apache包中包含很多有关http访问的方法

5android.net包对java.net包进一步的封装

6android.telephony.gsm包用于发送和管理sms消息。

具体的来说:在android studio下推荐的网络访问是

1HttpURLConnection对象

2Volley框架

3、使用HttpURLConnection对象来访问网络

api

1int getResponseCode()获取服务器响应的状态码

2String getResponseMessage()获取服务器响应的消息

3String getRequestMethod() 获取请求的方式

4void setRequestMethod()设置请求的方式

【说明】

1)服务器如何访问

2)请求的方式,对于客户端来说,请求有两种方式getpost

get直接向服务器发送字符串,类似于在浏览器的地址栏中输入字符发送给服务器;

post对请求信息进行编码,编码后发送给服务器。

不同的请求方式,需要服务器对应处理。也就是说get方式发送的请求,服务器需要响应get方式;post方式请求,需要服务器响应post方式请求。

在网页中:

<form action=”*” method=”get|post”></form>

通常直接访问一个图片信息,就是一个get方式的请求。(因为只发送了一个链接,而没有发送额外的请求信息)

【案例】使用HttpURLConnection获取网络中的图片

1)界面上有一个EditText,用于保存网络url;有一个button用于执行网络请求;有一个imageview用于显示网络下载下来的图片。

2)在MainActivity中,初始化这些UI控件,且设置Button的事件

3)由于需要访问网络,android要求网络访问必须放入子线程中。所以需要定义一个子线程。需要在run方法中实现网络访问。

4)使用HttpURLConnection来访问网络:

4.1 创建一个URL对象,用于表示访问什么地址?

4.2使用URL对象来创建一个HttpURLConnection对象

4.3设置请求的相关配置

4.4执行请求通过HttpURLConnection对象的getResponseCode()执行请求

4.5如果服务器返回的是200,表示是一个正确的响应。

4.6获取图片

4.7图片有了,需要发送给UI线程,需要定义一个Handler对象

5)定义一个Handler对象

4.8使用handlersendMessage方法发送图片

6)在handler对象的handleMessage方法中处理收到的消息

6.1还原图片

6.2将图片显示到UI

7)由于访问网络需要设定权限,

7.1androidManifest.xml文件中设置网络访问权限

7.2高版本的android系统需要设置动态权限

项目结构:

activity_main.xml

MainActivity.java

 

androidManifest.xml

效果:

原文地址:https://www.cnblogs.com/sanshengshitouhua/p/14577021.html