Android网络编程之总结

Android网络编程之总结

Android平台继承了java所支持的网络方式,还引进了Apache的Http的扩展包,并且提供单独的API(WIFI,蓝牙等)。所以在Android平台中,总共提供了3中网络接口,分别是:

(1)    java.net.*(Java标准接口)

(2)    org.apache(Apache接口)

(3)    android.net.*(Android网络接口)  

1.标准Java接口

java.net.*提供与联网有关的类,包括流、数据包套接字(socket)、Internet协议、常见 Http处理等。比如:创建URL,以及URLConnection/HttpURLConnection对象、设置链接参数、链接到服务器、向服务器写数据、从服务器读取数据等通信。这些在Java网络编程中均有涉及,我们看一个简单的socket编程,实现服务器回发客户端信息。

(1)    TCP/IP的Socket、ServerSocket

(2)    UDP的DatagramSocket、DatagramPackage

(3)    直接URL的HttpURLConnection

使用这个类的一般步骤:

1.通过URL.openConnection() 方法获取一个HttpURLConnection对象,并且将结果强制转化为HttpURLConnection类型。

2.准备请求(prepare the request),包括URI,headers中的各种属性等

(Request headersmay also include metadata such as credentials, preferred content types, andsession cookies.)

3.请求体(optionally)。如果有请求体那么setDoOutput(true)必须为true,然后把输入放在getOutputStream()流中。

4.读取响应。响应的headers一般包括了一些metadata比如响应体的内容类型和长度,修改日期以及session cookies。响应体可以从getInputStream()流中读出。

5.断开连接。响应体被读出之后,应该调用 disconnect()方法来断开连接。

2.Apache接口

对于大部分应用程序而言JDK本身提供的网络功能已远远不够,这时就需要Android提供的Apache的 HttpClient了。它是一个开源项目,功能更加完善,为客户端的Http编程提供高效、最新、功能丰富的工具包支持。

HttpClient

httpClient其实是一个interface类型,HttpClient封装了对象需要执行的Http请求、身份验证、连接管理和其它特性。从文档 上看,HttpClient有三个已知的实现类分别 是:AbstractHttpClient, AndroidHttpClient, DefaultHttpClient,会发现有一个专门为 Android应用准备的实现类AndroidHttpClient,当然使用常规的DefaultHttpClient也可以实现功能,但是既然开发的 是Android应用程序,还是使用Android专有的实现类,一定有其优势。

AndroidHttpClientDefaultHttpClient比较:

1.      AndroidHttpClient定义在android.net.http.AndroidHttpClient包下,属于Android原生的http访问,而DefaultHttpClient定义在org.apache.http.impl.client.DefaultHttpClient包下,属于对apche项目的支持。而AndroidHttpClient没有公开的构造函数,只能通过静态方法newInstance()方法来获得AndroidHttpClient对象。

2.      AndroidHttpClient对于DefaultHttpClient做了一些改进,使其更使用用于Android项目。


DefaultHttpClient

先看看使用DefaultHttpClient方式发送Web站点请求,上面已经简要说明了步骤,在这里简要说明一个参数的传递问题,对于GET方式,只需要拼接字符串就在URL结尾即可,但是对于POST方式,需要传递HttpEntity对象,HttpEntity为一个接口,有多个实现类,可以使用其间接子继承,UrlEncodedFormEntity类来保存请求参数,并传递给HttpPost。


AndroidHttpClient

 需要注意的是,AndroidHttpClient是一个final类,也没有公开的构造函数,所以无法使用new的形式对其进行实例化,必须使用AndroidHttpClient.newInstance()方法获得AndroidHttpClient对象。

 

能过Apache HTTP来访问HTTP资源三步曲:

 

1.创建HttpGet或者HttpPost对象,将要请求的URL对象构造方法传入HttpGet、HttpPost对象

2.通过HttpClent接口的实现类DefaultClent.excute(HttpUriRequest request)而我们已经知道HttpGet和HttpPost类都实现了HttpUriRequest接口,所以这里面,我们可以将第1步创建好的 HttpGet或者HttpPost对象传入进来。来得到HttpResponse对象

3.通过HttpResponse取到返回的一些信息,再做提取

 

3.android.net编程:

常常使用此包下的类进行Android特有的网络编程,如:访问WiFi,访问Android联网信息,邮件等功能。这里不详细讲。

(1)    使用WebService

(2)    直接使用WebView视图组件显示网页


自己总结的图:很粗糙(有待修改)



(待修改)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值