在Android Studio开发时若是使用eclipse加springMVC作为服务器,如何进行数据的交互。
数据发送
假设后端服务器使用springMVC框架以及@RequestMapping注解接收客户端请求并返回相应的类型的json数据,客户端使用HttpURLConnection方法连接服务器,需用json格式字符串作为请求数据发送
url=new URL(urlPath);
JSONObject jsonObject=new JSONObject();
jsonObject.put("内容",str);
.................
HttpURLConnection link=(HttpURLConnection) url.openConnection(); //开启连接
link.setConnectTimeout(8000);//设定时延
link.setDoOutput(true);
link.setRequestMethod("POST");
link.setRequestProperty("ser-Agent", "Fiddler");
link.setRequestProperty("Content-Type","application/json");
link.setRequestProperty("charset","utf-8");
//写输出流,将要转的参数写入流里
OutputStream os=link.getOutputStream();
os.write(content.getBytes()); //字符串写进二进流
os.close();
数据接收
接受的json数据不能直接读取,可以先转换为字节数组
InputStream inputStream=link.getInputStream()
try {
byte[] buffer = new byte[1024];
int len = -1 ;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = inputStream.read(buffer)) != -1){
baos.write(buffer, 0, len);
}
baos.close();
String data = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
这里得到的数据为XML格式,需要将其序列化。
现在假设一个用户登录的场景,用户输入的数据为用户名密码,后台验证后返回此用户的基础数据,即一个USER类的json字符串,架设一个用户类有用户名密码和邮箱三种数据成员,那么在Android Studio中的用户类的数据成员需要加上Element注解用于映射.
public class User {
@Element
private static int id;
@Element
private static String password;
@Element
private static String email;
public void User(){
User inf = new User();
inf.setid(...);
inf.setpwd(...;
inf.setemail(...);
}
//getter and setter
..........
//
//
}
一个对象和不同格式(比如JSON或XML)之间的序列化和反序列化非常复杂。可以使用Serializer序列化器将字节数据转换为相应的用户类对象,Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。
其原理可以详见 AndroidStudio-3.2.1(十五)JSON和XML基本操作
在准备好了用于序列化的数据,并保证格式匹配后,直接使用即可
User user= new User();
Serializer serializer = new Persister();
serializer.read(user, data);
这样便将服务器返回的user类数据装载到了客户端的一个user对象中了。