2012-04-14 26 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

+0

私はそれがout.print()が実際に1つを送信するオブジェクトを取得すると思ったが、今私はよく知っている、ありがとう。上記のコードについては、 を意味しています。 OutputStream out = response.getOutputStream(); の代わりに を使用します。PrintWriter out = response.getWriter(); とHttpResponseはgetOutputStream() を持っていないので、私の問題は残ります – Rami

+0

ああ、そうです。応答のために私はあなたが 'response.getInputStream()'を使用しなければならないと思います。 – AntonS

関連する問題