2009-06-30 6 views
3

私はHttpServletRequestの内容を取得しようとしています。ここで私はそれをやっている方法です:HttpServletRequestからコンテンツを取得できません

// Extract the request content 
StringBuilder stringBuilder = new StringBuilder(); 
BufferedReader bufferedReader = null; 
String content = ""; 

try { 
    InputStream inputStream = request.getInputStream(); 
    if (inputStream != null) { 
     bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
     char[] charBuffer = new char[128]; 
     int bytesRead = -1; 
     while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { 
      stringBuilder.append(charBuffer, 0, bytesRead); 
     } 
    } else { 
     stringBuilder.append(""); 
    } 
} catch (IOException ex) { 
    throw ex; 
} finally { 
    if (bufferedReader != null) { 
     try { 
      bufferedReader.close(); 
     } catch (IOException ex) { 
      throw ex; 
     } 
    } 
} 

content = stringBuilder.toString(); 
System.out.println("Length: " + request.getContentLength()); 

文字列 "内容"が空です。 53

まさに私が期待していたコンテンツの長さ:しかし、最後の行は

長さを表示します。それが助け場合は、ここで私は、このサーブレットをトリガーする方法である:

まあ
wget --post-data='{"imei":"351553012623446","hni":"310150","wdp":false}' http://localhost:8080/test/forward 
+0

どのサーブレットコンテナを使用していますか?私のコードはTomcat 6.0.18で動作します。 –

+0

Tomcat 6.0.20 「コンテンツ」に何かが得られていますか? –

+0

「コンテンツ」の価値をどのように確認していますか? –

答えて

2

、私は最終的に答えを見つけました! wgetに与えられた "ポストデータ"の値がリクエストのパラメータの名前になることが分かります。言い換えれば、要求の最初の(そして唯一の)パラメータのパラメータ名を取得した場合、その値を取得します。それを抽出するコードは簡単です:

// Extract the post content from the request 
@SuppressWarnings("unchecked") 
Enumeration<String> paramEnum = request.getParameterNames(); 
paramEnum.hasMoreElements(); 
String postContent = (String) paramEnum.nextElement(); 

お返事ありがとうございます!

関連する問題