JavaオブジェクトをHttpポストで送信する方法

クライアント
package com.javaagogo.postjavaobject.httpclient;

import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import com.javaagogo.postjavaobject.data.DataObject;
public class Main {
 public static void main(String[] args) {
  try {
   URL url = new URL("http://localhost:8080/postjavaobject");
   HttpURLConnection con = (HttpURLConnection) url.openConnection();
   con.setDoInput(true);
   con.setDoOutput(true);

   DataObject data = new DataObject();
   data.setName("I am client.");
   data.setId(1);

   // DataObjectを送信
   ObjectOutputStream out = new ObjectOutputStream(con
     .getOutputStream());
   out.writeObject(data);
   out.flush();
   out.close();
   ObjectInputStream in = new ObjectInputStream(con.getInputStream());
   DataObject response = (DataObject) in.readObject();
   in.close();
   System.out.println("name=" + response.getName() + "  id=" + response.getId());
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

サーブレット
package com.javaagogo.postjavaobject;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.javaagogo.postjavaobject.data.DataObject;

@SuppressWarnings("serial")
public class PostJavaObjectServlet extends HttpServlet {
 public void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws IOException {
  try {
   // アプレットから要求を受信する
   ObjectInputStream in = new ObjectInputStream(req
     .getInputStream());
   DataObject inData = (DataObject) in.readObject();
   in.close();

   // アプレットに返す文字列を作る
   DataObject outData  =  new DataObject();
   outData.setName("サーブレット エコー : " + inData.getName());
   outData.setId(inData.getId());

   // アプレットに送信する
   ObjectOutputStream out = new ObjectOutputStream(resp
     .getOutputStream());
   out.writeObject(outData);
   out.flush();
   out.close();

  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doGet(request, response);
 }
}
データ
package com.javaagogo.postjavaobject.data;

import java.io.Serializable;

public class DataObject implements Serializable{

 /**
  * 
  */
 private static final long serialVersionUID = -6534725917724535071L;

 private int id ;
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public static long getSerialVersionUID() {
  return serialVersionUID;
 }
 public String name;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}
最終更新:2009年06月18日 20:11
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。