都道府県穴埋めゲーム

お世話になっております。
WEBアプリケーションを作成しているのですが、
問題が解消されずに困っております。
どなたかわかる方、ご教授いただけないでしょうか。

【質問】
サーバーAからサーバーBへデータをPOSTする方法を教えてください。

【詳細】
現在サーバーAのサーブレットより、サーバーBのサーブレットへデータをPOSTで渡そうとしています。
そして、サーバーBのサーブレットが持つdoPostメソッドにて、渡したデータ処理を実施したいです。
forwardとsendRedirectを考えたのですが、
forwardだと他サーバーへデータを渡すことができないようです。
また、sendRedirectだとdoGetメソッドが実行されるため、おそらくGetが行われていると考えられます。
現在、Javaだけでコーディングを実施しているため、Javaでの実現方法を教えていただけると非常に助かります。

大変困っておりますので、わかる方はぜひご教授ください。

A 回答 (2件)

方法は幾つかありますが、以前HttpURLConnectionを使った方法を。



--- サーバーAのサーブレット ---
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ServletA extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 下のURL部分はサーバーBのサーブレットを指定します
URL url = new URL( "http://192.168.0.100/hoge/HogeServlet" );
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod( "POST" );
con.setRequestProperty( "Accept-Language", "ja" );
con.setDoOutput( true );

PrintWriter pw;
pw = new PrintWriter( con.getOutputStream() );
pw.print( "para1=ABC&para2=123" ); // 複数パラメータは「&」で区切って送ります
pw.close();

// 一応、受信するフリをしないとダメっす
BufferedReader br = new BufferedReader( new InputStreamReader( con.getInputStream() ) );
br.close();

con.disconnect();
}
}


--- サーバーBのサーブレット ---
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Servlet2 extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String str1 = request.getParameter( "para1" );
String str2 = request.getParameter( "para2" );
System.out.println( str1 );
System.out.println( str2 );
// 一応、レスポンスするフリをしないとダメっす
PrintWriter pw = response.getWriter();
pw.close();
}
}


あとはjakarta commonsを使う手かもです。
http://jakarta.jp/commons/httpclient/
    • good
    • 0
この回答へのお礼

mintia007さん

ご回答ありがとうございました。
ソースまで添付して頂き、非常に助かりました。
参考にさせていただきます。

お礼日時:2010/12/17 19:49

HTTP通信でなければならない場合はHTTP通信を自作するか、


CommoneNetのHTTPClientを使ったりですかね。
もしくは、SOAPでもイイんじゃない。
    • good
    • 0
この回答へのお礼

ATebさん

ご回答ありがとうございました。
HTTP通信って自作できるんですね。
初めて知りました。
今後勉強させていただきます。

お礼日時:2010/12/17 19:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報