Android网络访问方法详解

大多数的Android应用程序都会使用HTTP协议来发送和接收网络数据,而Android中主要提供了两种方式来进行HTTP操作,

HttpURLConnection和HttpClient。这两种方式都支持HTTPS协议、以流的形式进行上传和下载、配置超时时间、IPv6、以及连接池等功能。

一 : 首先来看一下Android下提供的网络访问相关API

a) java.net.*(标准的Java接口):包括流和数据包(datagram)sockets、Internet 协议和常见 HTTP 处理。HttpURLConnection就是这个包下的。

b) org.apache.HttpClient: Appache提供的开源包,弥补了 java.net.* 灵活性不足的缺点,DefaultHttpClient是其具体实现类。

c) android.net(android接口):也是HttpClient的实现,提供了android下的特有网络编程。如:访问WiFi,访问Android联网信息,邮件等功能。

二: Which client is best?

Google官方文档介绍,在2.3及以后的版本中,HttpURLConnection是最好的选择,它简单的api以及轻量级非常适合Android。压缩和缓存机制降低了网路使用,提高了速度、节省了电量。新的应用应该选择使用HttpURLConnection,但在2.2之前有bug。

但是在 链接管理 和 线程安全方面。HttpClient任然具有很大优势,其提供了大量的可扩展的稳定的APIs,但是在不破坏其兼容性的前提下 很难对其诸多API 进行修改,升级和扩展。 Google对其的优化并不积极,一般用于android2.2及以下版本中。

三: 网络协议

网络七层 , 一般编程人员接触最多的就是应用层和运输层。


OSI中的层


OSI中的层


TCP/IP协议族


应用层


文件传输,电子邮件,文件服务,虚拟终端


TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet


表示层


数据格式化,代码转换,数据加密

 

会话层


解除或建立与别的接点的联系

 

传输层


提供端对端的接口


TCP,UDP


网络层


为数据包选择路由


IP,ICMP,RIP,OSPF,BGP,IGMP


数据链路层


传输有地址的帧以及错误检测功能


SLIP,CSLIP,PPP,ARP,RARP,MTU


物理层


以二进制数据形式在物理媒体上传输数据


ISO2110,IEEE802。IEEE802.2

tcp 和udp是传输层协议 ,定义的是数据传输和连接方式的规范(面向连接,TCP三层握手)(UDP不可靠的协议)

http 是应用层协议 ,定义的是传输数据的内容的规范(客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接)

Socket是一组编程接口(API)。介于传输层和应用层,向应用层提供统一的编程接口。应用层不必了解TCP/IP协议细节。直接通过对Socket接口函数的调用完成数据在IP网络的传输。

基于TCP的Socket (HTTP)、基于UDP的Socket(SNMP)、基于RawIp的Socket(ping)、基于链路层的Socket

HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP

我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

四 : 其它网络相关技术

1) WebView :HTML<------->javascript<-------->Android Java

2) Webservice :基于SOAP协议 ,简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议。

3) 服务器推送 :通过建立持久连接的方法,服务器端发送信息给手机Android用户。

      ——MQTT协议

      ——XMPP协议

      ——第三方推送 Android Push Notification Service

4) PhoneGap

时间: 2024-10-22 21:18:56

Android网络访问方法详解的相关文章

Android工程:引用另一个Android工程的方法详解

本篇文章是对在Android中引用另一个Android工程的方法进行了详细的分析介绍.需要的朋友参考下 现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新建了另外一个Android工程B,想在B中引用A. 一个思路是把工程A做成纯Jar包,这样其他的工程就可以直接引用了. 但是,如果在工程A中用了R.java中的引用,则无法打成jar包了.原因是R.java是自动生成的,是动态的,每次编译都是不相同的.如果一定要做成jar包,就不能使用自动生成的R文件,

Android判断网络状态方法详解

Android 判断网络状态这一应用技巧在实际应中是比较重要的.那么,在Android操作系统中,如何能够正确的判断我们所连接的网络是否断开恩?今天我们就针对这一应用技巧进行一个详细的分析. 1.public class ConnectionChangeReceiverextends BroadcastReceiver 2.{ [email protected] 4.public void onReceive( Context context,Intent intent ) 5.{ 6.Conn

Android网络访问方法(二)---HttpURLConnection

“你是我的定格,我是你的过客.”------Android,我来了! 最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内.在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助.下面的代码简单描述了如何使用HttpURLConnecti

android中Drawable方法详解

1. BitmapDrawable相关方法: 新建在drawable目录下面,示例如下: <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:antialias="true" android:dither="true" android:filter="true" android:gravity="center&qu

Android layoutInflate.inflate 方法详解,removeView()错误解决

错误: The specified child already has a parent. You must call removeView(). 解答: 这个错误很直白,就是你viewGroup.addView(childView); 中childView已经有父View了.错误原因很多,我主要讲下 mLayoutInflater.inflate(id, rootView, false);造成的这个错误.(该方法有两种,一种是2个参数,一种是3个参数). 2个参数: 第一个参数:layout的

Android fragment onHiddenChanged方法详解

项目中,为了实现不同fragment之间值得传递,首先想到的是利用bundle或者shareprefercnce之类的共享数据机制,当不符合项目需求,有点过于复杂和冗余,就利用网上一位前辈的建议,在主Activity中,创建一个共享的数据变量,在其他fragment中只要获取到这个值就可以得到数据,实现共享,代码如下: 主activity定义一个共享数据变量: private String instrName; public String getInstrName() { return inst

Android应用盈利广告平台的嵌入方法详解

一.如何学习Android   android开发(这里不提platform和底层驱动)你需要对Java有个良好的基础,一般我们用Eclipse作为开发工具.对于过多的具体知识详细介绍我这里不展开,我只说我个人的学习方法和本人以为的好的步骤.   1.搭建环境:包括对Java和Eclipse及模拟器(有真机再好不过)的熟悉,对于android的tools和adb命令可以放到后面熟悉了解.   2.从helloworld开始:了解一个基本的android应用代码包含哪些,各部分做什么用.(这里只要

google无法访问 2014解决方法详解

方法二 寻找可用IP地址 IP地址一:http://74.125.205.147/ 即可访问谷歌 转:http://www.newasp.net/tech/89292.html 以是我个人实测的:配合 Chrome 浏览器.GoaAgent v3.1.8.SwitchySharp.crx.SwitchyOptions.bak 就可以访问google 而且搜索打开的页面很快. google无法访问 2014解决方法详解,布布扣,bubuko.com

Android——onCreate( )方法详解(转)

android开发之onCreate( )方法详解 onCreate( )方法是android应用程序中最常见的方法之一,那么,我们在使用onCreate()方法的时候应该注意哪些问题呢? 先看看Google Android Developers官网上的解释: onCreate(Bundle) is where you initialize your activity. Most importantly, here you will usually call setContentView(int