zwmmenghuan123 2015-05-10 02:50 采纳率: 33.3%
浏览 1523

【求助万能的csdn】android客户端传递一个类到服务器端的问题?毕设问题急

现在是希望将android客户端生成的Device类传到服务器端处理,Device类已经实现了serializable类。
android端:
public static void upload(String url_path, Device d) {
try {
URL url = new URL(url_path);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setReadTimeout(2000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
OutputStream out = conn.getOutputStream();
//GZIPOutputStream gzipout = new GZIPOutputStream(out);
ObjectOutputStream O_out = new ObjectOutputStream(out);
O_out.writeObject(d);
System.out.println(url_path + d.getDescribes()); //此处可以输出,可是
//gzipout.finish(); //服务器端没有收到请求。
O_out.flush();
O_out.close();
out.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
url路径没问题。

服务器端:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("--post--");
InputStream in = request.getInputStream();
//GZIPInputStream Gin = new GZIPInputStream(in);
ObjectInputStream O_in = new ObjectInputStream(in);
try {
Device device = (Device) O_in.readObject();
List list = new ArrayList();
list.add(device.getId());
list.add(device.getType());
list.add(device.getSize());
list.add(device.getDescribes());
String sql = "insert into device values(?,?,?,?)";
if(ju.updateByPreparedStatement(sql, list)) {
System.out.println("上传完成!");
}
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("上传错误");
}
}

如果有请求,服务器端应该输出“--post--”,很明显服务器没有收到android的请求
请问这代码错在哪呢?还有要如何实现类的传输?这段代码对吗?谢谢!

  • 写回答

4条回答 默认 最新

  • Sunzxyong 2015-05-10 07:10
    关注

    在你这段代码中,OutputStream out = conn.getOutputStream();
    ObjectOutputStream O_out = new ObjectOutputStream(out);
    O_out.writeObject(d);
    应该写入的是已经序列化好的Device,然后用conn.connect();建立与服务器的连接,此时才是真正和服务器建立连接了,所以你缺少这个肯定收不到请求了,然后服务端接收到的流再反序列化成Device,即ok了

    评论

报告相同问题?

悬赏问题

  • ¥15 github符合条件20分钟秒到账,github空投 提供github账号可兑换💰感兴趣的可以找我交流一下
  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?