AndroidStudio使用HttpURLConnection方法连接SSM服务器端并发送以及接收数据

在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对象中了。

你可能感兴趣的:(Android开发)