HttpServletRequest での JSON POST データへのアクセス
本文に JSON データを含む HTTP POST リクエストを作成する場合、リクエスト データの取得は従来の getParameter メソッドが使用される場合のチャレンジ。これは、getParameter が「application/x-www-form-urlencoded」形式でエンコードされたキーと値のペアでのみ機能するためです。
ただし、JSON データ ストリームの場合は、カスタム アプローチが必要です。
JSON データのカスタム デコーダー
JSON POST データにアクセスするには、以下を利用する必要があります。生のデータ ストリームを処理する BufferedReader:
BufferedReader reader = request.getReader();
org.json パッケージを使用した例
以下は、一般的な org.json ライブラリを使用して JSON をデコードする例です。 POST データ:
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) { /*report an error*/ } try { JSONObject jsonObject = HTTP.toJSONObject(jb.toString()); } catch (JSONException e) { // crash and burn throw new IOException("Error parsing JSON request string"); } }
このコードは、JSON データを読み取り、それをさらに処理するための JSONObject。その後、getInt、getString、getJSONArray などのメソッドを使用して、必要な特定のデータを抽出できます。
以上がHttpServletRequest を使用してサーブレット内の JSON POST データにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。