ホームページ >バックエンド開発 >PHPチュートリアル >投稿リクエストのネイティブデータを取得する
一部のリクエストによって送信されるデータは、共通のパラメーター名ではない場合があります。たとえば、WeChat パブリック プラットフォーム サーバーによって開発者の指定された URL に送信されるデータは、パラメーター値のマッピング関係のキーと値のペアです。現時点では、それを渡すことはできません。 java の request.getParameter("パラメータ名") や、php の $_POST['パラメータ名'] を通じて取得することはできません。 この種のデータの場合、解決策は次のとおりです。
追加説明: getReader() と getInputStream() はリクエスト後に 1 回だけ呼び出すことができ、両方を同時に呼び出すことはできません。Phpコード
request.setCharacterEncoding("utf-8"); StringBuilder buffer = new StringBuilder(); java.io.BufferedReader reader=null; try{ /** * getReader() * Retrieves the body of the request as character data using a BufferedReader * getInputStream() * Retrieves the body of the request as binary data using a ServletInputStream. */ reader = request.getReader(); String line=null; while((line = reader.readLine())!=null){ buffer.append(line); } }catch(java.io.IOException e){ e.printStackTrace(); }finally{ if(null!=reader){ try { reader.close(); } catch (java.io.IOException e) { e.printStackTrace(); } } } String res = buffer.toString(); System.out.print(res);追加説明: enctype属性のhtmlは、サーバーに送信する前にフォームデータをエンコードする方法を指定します。デフォルトのデフォルト値は「application/x-www-form-urlencoded」です。 application/x-www-form-urlencoded は、送信されたデータをキーと値のペアの形式にエンコードします。バックエンドは request.getParameter() を通じて text/plain を直接取得できます。データはプレーン テキストでエンコードされます。ここで、コントロールや書式設定文字は含まれません。 multipart/form-data、送信されるデータはマルチメディア送信プロトコルを使用する必要があります。マルチメディアは大量のデータを送信するため、アップロードされたファイルはポストメソッドでなければならないと規定されています。
ファイルをアップロードする場合、使用するエンコードタイプは「multipart/form-data」である必要があります。これはテキストデータを送信でき、バイナリデータのアップロードもサポートします。