Android之通信小议

来源:互联网 发布:剑三高冷炮哥捏脸数据 编辑:程序博客网 时间:2024/06/06 16:53

一、总

Android通信一般有两大类:Socket和Http

Socket又分为两类:TCP和UDP

Http也有两类:Get和Post

二、分

1、Socket之TCP

Tcp是一种面向连接的,可靠的,基于IP协议的传输层协议,全名“传输控制协议”。

客户端:Socket

服务端:ServerSocket

数据传输:getInputStream()/getOutputStream

读写:BufferedReader/PrintWriter

2、Socket之UDP

Udp是一种无连接的,不可靠的,基于IP协议的传输层协议,全名“用户数据报协议”。

客户端:DatagramSocket

服务端:DatagramSocket

数据传输:DatagramPacket

3、Http之Get

http是一种无状态的基于请求响应的应用程协议,有http1.0和http1.1之分,不同之处请自行查阅。

Get方法优点:操作简单

Get方法缺点:安全性低,提交数据量少

适用于查询,删除

android客户端代码:

String url = "http://www.abc.com/login.jsp?name=z&pass=z";

HttpGet get = new HttpGet(url);


HttpClient client = new DefaultHttpClient();

HttpResponse response = client.execute(get);


if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

    String result = EntityUtils.toString(response.getEntity(), "UTF-8");

}else {

}

4、Http之Post

Post方法优点:安全性相对较高,提交数据量大

Post方法缺点:操作繁琐

适用于增加,修改

android客户端代码:

String url = "http://www.abc.com/login.jsp";

HttpPost post = new HttpPost(url);

List<NameValuePair> params = new ArrayList<NameValuePair>();

params.add(new BaaicNameValuePair("name", "z"));

params.add(new BaaicNameValuePair("pass", "z"));

HttpEntity entity = new UrlEncodedFormEntity(params, HTTP.UTF_8);

post.setEntity(entity);


HttpClient client = new DefaultHttpClient();

HttpResponse response = client.execute(post);


if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {

    String result = EntityUtils.toSring(response.getEntity(), "UTF-8");

}else {

}

三、总

以上是这四种通信的基本用法,具体可以查阅Android Doc帮助文档。其中http的Post和Get实现方法除了本文用到的apache的HttpClient以外,还可以选用java的HttpURLConnection来实现。我没有把代码粘上去,因为我认为,重要的不是代码,而是你的思想和方法,只要你知道有这几种方式,你就可以通过各种途径去实现它,首选帮助文档,如果时间紧迫,你可以google或baidu现成的代码去用。如果有心,里面用到了一些类你可以私下去了解,包括:Socket/ServerSocket/Url/DatagramSockt/DatagramPakcet/BufferedReader/PrintWriter/HttpGet/HttpPost/HttpClient/HttpResponse/NameValuePair/HttpEntity/HttpURLConnection

每天进步1%,一年你会进步多少呢?
















0 0
原创粉丝点击