2013-02-19 3 views
5

オブジェクトをシリアル化してHTTP経由で送信しようとしています。私はいくつかのチュートリアルを使ってソケットを扱っていますが、ソケットを使ったり、ローカルにファイルを保存したりすることはできません。HTTP経由でオブジェクトを変換する正しい方法。

ここ

は、テストクラスの従業員である:

public class Employee implements java.io.Serializable { 
     public String name; 
     public String address; 
     public transient int SSN; 
     public int number; 

     public void mailCheck() { 
      System.out.println("Mailing a check to " + name + " " + address); 
     } 

} 

クライアント側:

パブリッククラスSerializeAndSend {

public static void main(String args[]){ 

     one.Employee e = new one.Employee(); 
     e.name = "Reyan Ali"; 
     e.address = "Phokka Kuan, Ambehta Peer"; 
     e.SSN = 11122333; 
     e.number = 101; 

     sendObject(e); 

} 

public static Object sendObject(Object obj) { 
    URLConnection conn = null; 
    Object reply = null; 
    try { 

     // open URL connection 
     URL url = new URL("///myURL///"); 
     conn = url.openConnection(); 
     conn.setDoInput(true); 
     conn.setDoOutput(true); 
     conn.setUseCaches(false); 
     // send object 
     ObjectOutputStream objOut = new ObjectOutputStream(conn.getOutputStream()); 
     objOut.writeObject(obj); 
     objOut.flush(); 
     objOut.close(); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
     return null; 
    } 
    // recieve reply 
    try { 
     ObjectInputStream objIn = new ObjectInputStream(conn.getInputStream()); 
     reply = objIn.readObject(); 
     objIn.close(); 
    } catch (Exception ex) { 
     // it is ok if we get an exception here 
     // that means that there is no object being returned 
     System.out.println("No Object Returned"); 
     if (!(ex instanceof EOFException)) 
      ex.printStackTrace(); 
      System.err.println("*"); 
    } 
    return reply; 
} 

}

私はthatsのが正しいと思います。

ます。public void doPostメソッド(HttpServletRequestのREQ、HttpServletResponseのRESP){

Object obj; 
ObjectInputStream objIn = new ObjectInputStream(req.getInputStream()); 

try { 
    obj = objIn.readObject(); 
} catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
} 

Employee e = obj; 

}

IOExceptionがスローされます。しかし、私は、私はあまりにも、サーバー側の従業員クラスを持って、サーバー側のこだわっていますこのオブジェクトを従業員クラスオブジェクトに戻すにはどうすればよいですか?

答えて

2

ちょうどそれを型キャストします。

Employee emp = (Employee)objIn.readObject(); 
関連する問題