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

问题描述

【求助万能的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的请求
请问这代码错在哪呢?还有要如何实现类的传输?这段代码对吗?谢谢!

解决方案

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

解决方案二:

不是,那个只是打开连接,真正的连接是.connect(),这时才会建立tcp连接

解决方案三:

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");
conn.connect();
OutputStream out = conn.getOutputStream();
ObjectOutputStream O_out = new ObjectOutputStream(out);
O_out.writeObject(d);
O_out.flush();
O_out.close();
out.close();

加个连接即可

解决方案四:

浏览器访问servlet服务看是否能收到请求。

时间: 2024-11-02 16:48:25

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

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

问题描述 [求助万能的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) ur

winform-Winform客户端和Android客户端同时使用一个服务端,后端(C#)采用什么技术实现?

问题描述 Winform客户端和Android客户端同时使用一个服务端,后端(C#)采用什么技术实现? asp.net Webapi作为Android服务端(个人想法),Winform使用什么服务端呢?如果要求数据同步,使用观察者模式?使用的协议也是个问题.求大神指点! 解决方案 web API都可以,只要你 的服务器是什么平台就选对应的,比如windows就用C#等开发web API这样各种客户端都可以访问 解决方案二: 考虑到android调用的方便,建议直接用asp.net mvc返回js

Android反射出一个类中的其他类对象并调用其对应方法

MainActivity如下: package cn.testreflect; import java.lang.reflect.Field; import java.lang.reflect.Method; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 在一个类中有另外一个类的对象 * 比如此处的Worker类中有一个Student类的对象: * private Student mStudent;

app-CSDN Android客户端1.2.2有哪些bug?

问题描述 CSDN Android客户端1.2.2有哪些bug? CSDN Android客户端1.2.2有哪些bug? 地址:http://www.csdn.net/app/ 解决方案 至今还没发现问题,感觉用着不错 解决方案二: bug没有发现,问答页面问答等也按钮太小了 解决方案三: 字体太小,向左滑动看我的问答 有点卡,还有每次都要手动登陆,关注的人不能进他的主页等等. 解决方案四: 没有自动登陆功能==没有网的时候不能离线看东西. 还有 不能看博客. 解决方案五: 字小,刷新加载慢(排

实例详解Android快速开发工具类总结_Android

一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException("Cannot be instantiated!"); } // 是否需要打印bug,可以在application的onCreate函数里面初始化 public static boolean isDebug = true; private static final String TAG

实例详解Android快速开发工具类总结

一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException("Cannot be instantiated!"); } // 是否需要打印bug,可以在application的onCreate函数里面初始化 public static boolean isDebug = true; private static final String TAG

j2ee-j2EE客户端 和android客户端之间的内容传递问题。

问题描述 j2EE客户端 和android客户端之间的内容传递问题. 做一个app服务端用的是j2EE维护一个mysql数据库,,客户端用android我想在动态生成一个SQLite小型数据库,现在存在的问题就是1:mysql数据库往客户端传递数据时候用的是什么格式json,还是xml,具体原因是什么.2:这样处理合理吗?手机端维护一个SQLite和mysql能不能更好的同步办法. 解决方案 首先你的第一个问题应该是服务器端与客户端传递用json还是xml,现在一般都是用json的,因为json

可耻啊!来求助的!关于android与java客户端通讯问题(tcp/ip)

问题描述 事情是这个样子的!服务端用oos=newObjectOutputStream(socket.getOutputStream());oos.writeObject(templist);oos.flush();其中的templist是个JList对象然后在客户端ois=newObjectInputStream(socket.getInputStream());templist=(JList)ois.readObject();读取,问题是每次读出来都是空的的的~~~~然后也不报错!手机显示程

使用Mina框架开发QQ Android 客户端(3) 登陆功能的实现

在博客中有登陆界面的文章http://blog.csdn.net/vestigge/article/details/8124674 就不在重复了,直接看登陆的代码, 用Mina传递字符串上节已经看过了,要实现传递对象,也非常简单,只需要修改一下过滤器: chain.addLast("codec", new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 在Android客户端,登陆的Activity中: publ