2012-04-14 29 views
3

我想从服务器发送一个对象到客户端。如何从HttpResponse获取对象?

客户端:

HttpResponse response = client.execute(request); 

服务器端:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException 
{ 
    PrintWriter out = response.getWriter(); 
    out.print(new Object()); 
} 

如何得到响应的对象?
我是否需要改用:

OutputStream out = response.getOutputStream(); 

如果是哪种方式更有效?
示例代码请:)
谢谢。

回答

4

你不能发送Object.toString(),因为它不包含有关该对象的所有信息。 序列化可能是你需要的。看看那个:http://java.sun.com/developer/technicalArticles/Programming/serialization/
你想发送的对象必须实现Serializable。 在您的服务器就可以使用这样的事情:

OutputStream out = response.getOutputStream(); 
oos = new ObjectOutputStream(out); 
oos.writeObject(yourSerializableObject); 

在客户端,你这样做:

in = new ObjectInputStream(response.getEntity().getContent()); //Android 
in = new ObjectInputStream(response.getInputStream()); //Java 
ObjcetClass obj = (ObjectClass)in.readObject(); 
+1

或者,您可以使用序列化JSON,有几个项目,如杰克逊的http:// jackson.codehaus.org/,可以很容易地序列化对象的Gson。跨平台且易于调试。 – j13r 2012-04-14 15:07:08

+0

我认为,因为out.print()得到的对象它真的发送一个,但现在我知道更好,谢谢。关于上面的代码我猜你的意思是: OutputStream out = response.getOutputStream();而不是: PrintWriter out = response.getWriter(); 和HttpResponse没有getOutputStream() 所以我的问题仍然是 – Rami 2012-04-14 15:25:35

+0

哦,是的,我的意思是。对于响应,我认为你必须使用'response.getInputStream()' – AntonS 2012-04-14 15:32:32