2012-04-14 4 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()가 실제로 하나를 보내는 객체를 얻었지만 지금은 더 잘 알고 있다고 생각했다. 고마워. 위의 코드에 대한 의 의미는 다음과 같습니다. OutputStream out = response.getOutputStream(); 대신 PrintWriter out = response.getWriter(); 및 HttpResponse에는 getOutputStream() 이 없으므로 내 문제가 남아 있습니다. – Rami

+0

아, 그래요. 응답을 위해 나는 당신이 response.getInputStream()을 사용해야한다고 생각한다. – AntonS

관련 문제