2012-04-14 21 views
3

Ich versuche, ein Objekt vom Server zum Client zu senden.Wie bekomme ich ein Objekt von HttpResponse?

Client-Seite:

HttpResponse response = client.execute(request); 

Server-Seite:

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

Wie bekomme ich das Objekt aus der Antwort?
Muss ich stattdessen verwenden:

OutputStream out = response.getOutputStream(); 

wenn ja, welche Art und Weise ist effizienter?
Beispielcode bitte :)
danke.

Antwort

4

Sie können nicht nur Object.toString() senden, da es nicht alle Informationen über das Objekt enthält. Serialisierung ist wahrscheinlich das, was Sie brauchen. Werfen Sie einen Blick darauf: http://java.sun.com/developer/technicalArticles/Programming/serialization/
Das Objekt, das Sie senden möchten, muss Serializable implementieren. Auf dem Server können Sie dann so etwas wie folgt verwenden:

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

Auf der Client-Seite, die Sie tun:

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

Alternativ können Sie serialisieren JSON verwenden, gibt es mehrere Projekte, wie http Jackson: // jackson.codehaus.org/, Gson, das Objekte leicht serialisieren kann. Plattformübergreifend und einfach zu debuggen. – j13r

+0

Ich dachte, dass becuase out.print() Objekt bekommen es wirklich sendet, aber jetzt weiß ich besser, Danke. über den obigen Code Ich denke, Sie meinten: OutputStream out = response.getOutputStream(); anstelle von: PrintWriter out = response.getWriter(); und HttpResponse haben nicht getOutputStream() so bleibt mein Problem – Rami

+0

Oh, ja ich meinte das. Für die Antwort denke ich, dass Sie 'response.getInputStream()' – AntonS

Verwandte Themen