Web アプリケーションでは、JSON データを含む特定の URL に POST リクエストを送信し、HttpServletRequest を使用しています。 POST データにアクセスします。ただし、リクエスト パラメータを列挙すると、「cmd」パラメータのみが見つかり、JSON データは見つかりません。
通常、request.getParameter("paramName ") 方法。これは、標準の HTML フォームで見られるように、POST データがコンテンツ タイプ「application/x-www-form-urlencoded」のキーと値のペアとしてエンコードされている場合にうまく機能します。
あなたの場合、 JSON データ ストリームを送信している場合は、カスタム デコーダを使用して、request.getReader() からアクセスできる生のデータ ストリームを処理する必要があります。 JSON POST 処理を処理する方法の例を次に示します。
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); 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"); } // Work with the data using methods like... // int someInt = jsonObject.getInt("intParamName"); // String someString = jsonObject.getString("stringParamName"); // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName"); // JSONArray arr = jsonObject.getJSONArray("arrayParamName"); // etc... }
要約すると、JSON POST データを処理する場合は、カスタム デコーダを使用してリクエスト本文から直接処理する必要があります。組み込みのパラメータ列挙メカニズムに依存するのではなく。
以上がHttpServletRequest を使用して JSON POST データを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。