一、总
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%,一年你会进步多少呢?