ダークエリア

SEのお仕事の備忘録や、ゲームの話などなどを記事に放り込む!!

SAStrutsでPOSTされたもの(リクエストパラメータ/JSON文字列)を受け取る話

----------------------------------------------------------------------------------------------------

★リクエストパラメータの場合

----------------------------------------------------------------------------------------------------

<クライアント側(HttpURLConnection)>

・HttpURLConnection(またはHttpsURLConnection)をconとする

・con.setDoOutput(true);

・con.setRequestMethod("POST");

・con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");

→String input = "test=value&test2=value2"; をPrintWriter

参考: Java - POSTメソッドを介してHTTPパラメータを簡単に送信 | CODE Q&A 問題解決 [日本語]

 

<ホスト側(HTTP)>

いろんな受け取り方がある

○RequestUtilを使う

・HttpServletRequest request = RequestUtil.getRequest();

・request.getParameter("user_id")

参考: Java、SAStruts、ActionでHTTPヘッダを取得|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

 

○ActionContextを使う

・Map<String,Object> request = ActionContext.getContext().getParameters();

・Object value = ActionContext.getContext().getParameters().get("key");

参考: ActionクラスからPOST, GETパラメータを取得 - ノウハウ共有サイト!

 

○RequestUtilを使ってMapで受け取る

・HotdeployHttpServletRequest request = (HotdeployHttpServletRequest) RequestUtil.getRequest();

・Map<String, String[]> requestMap = request.getRequest().getParameterMap();

(自分でごちゃごちゃやってて見つけた)

 

----------------------------------------------------------------------------------------------------

JSONの場合

----------------------------------------------------------------------------------------------------

<クライアント側(HttpURLConnection)>

・HttpURLConnection(またはHttpsURLConnection)をconとする

・con.setDoOutput(true);

・con.setRequestMethod("POST");

・con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

→String input = "{ test:\"value\", test2:\"value2\" }"; をPrintWriter

参考:

qiita.com 

<ホスト側(HTTP)>

・HttpServletRequest request = RequestUtil.getRequest();

・String postBody = ReaderUtil.readText(request.getReader()); で受け取る

→無事「{ test:"value", test2:"value2" }」が入っていた。JSONパースすれば使える!

参考:

qiita.com

 

★おまけ

こちらのページは、ソースコメントも多く、対向試験も(PHPでですが)やっていて、親切だなぁと思いました。

PHPerの方へのためにも参考情報として。

www.suzu6.net