ホームページ  >  記事  >  バックエンド開発  >  投稿リクエストのネイティブデータを取得する

投稿リクエストのネイティブデータを取得する

巴扎黑
巴扎黑オリジナル
2016-11-12 15:17:311904ブラウズ

一部のリクエストによって送信されるデータは、共通のパラメーター名ではない場合があります。たとえば、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」である必要があります。これはテキストデータを送信でき、バイナリデータのアップロードもサポートします。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。