一、Android网络通信
android网络通信一般有三种:java.net.*(标准Java接口)、Org.apache接口和Android.net.*(Android网络接口),涉及包括流、数据包套接字(socket)、Internet协议、常见Http处理等。
1、使用Socket进行通信
Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。Android Socket开发和JAVA Socket开发类似
无非是创建一个Socket服务端和Socket客户端进行通信。
Socket服务端代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
Socket客户端代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
服务端是普通JAVA项目,先启动服务端,再启动客户端Android项目,客户端连上服务端,把当前时间数据从服务端发往客户端显示出来
注意:服务器与客户端无法链接的可能原因有:
a、AndroidManifest没有加访问网络的权限:<uses-permission android:name="android.permission.INTERNET"></uses-permission>
b、IP地址要使用:10.0.2.2,不能用localhost
c、模拟器不能配置代理
2、使用Http进行通信
使用HttpClient在Android客户端访问Web,有点html知识都知道,提交表单有两种方式
get和post,Android客户端访问Web也是这两种方式。在本机先建个web应用。
data.jsp的代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
启动tomcat,访问http://192.168.1.101:8080/test/data.jsp?parameter=发送的参数
注意:192.168.1.101是我本机的ip,要替换成自己的IP。
按钮监听代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
get方式请求代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
post方式请求代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
点击'get'按钮:
点击'post'按钮
3、获取http网络资源
其实这里就是前面讲Android数据存储的最后一种:网络存储。将txt文件和png图片放在tomcat服务器上,模拟器通过http路径去获取资源显示出来。
获取路径为:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
获取文本资源代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
获取图片资源代码:
![](https://i-blog.csdnimg.cn/blog_migrate/cdec0645add3fc3c328197dda5c76203.gif)
注意:String msg = EncodingUtils.getString(baf.toByteArray(), "GBK");//转换为字符串,用UTF-8中文会乱码
运行效果: