之前都是通过json传输数据,突然想到最近接触到对象流(ObjectInputStream,ObjectOutputStream),便想着是否能通过对象流传输。
安卓段:
HttpURLConnection conn=null;
OutputStream os =null;
InputStream in =null;
try{
URL url = new URL(uri);
conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setDoOutput(true);//设置允许输出
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent", "Fiddler");
conn.setRequestProperty("Content-Type", "application/json");
os = conn.getOutputStream();
//os.write(content.getBytes("GBK"));//解决了json在服务端乱码
ObjectOutputStream oos =new ObjectOutputStream(os);
oos.writeObject(object);
oos.close();
if(conn.getResponseCode()!=200){
Log.i("返回值", String.valueOf(conn.getResponseCode()));
return;
}
服务端:
HttpServletRequest request=ServletActionContext.getRequest();
InputStream is = request.getInputStream();
try {
ObjectInputStream ois = new ObjectInputStream(is);
Note note =(Note) ois.readObject();
ois.close();
is.close();
在流没有关闭时 报EOF错误,关掉后报ClassNotFound错误。
传输对象都已经序列化,最后发现传输的对象的包居然要和安卓端写的对象所在包要相同才解决问题。里面具体的原因还要去探究。
//TODO 2016/8/18