HttpExchange オブジェクトの getRequestBody メソッドは、InputStream を返します。「ボディ」を正しく読み取るには、まだ多くの作業が必要です。もう一歩進んで、(サーバー側で) 本体をすぐに使用できる Java String として返す Java ライブラリ + オブジェクト + メソッドですか?
36875 次
5 に答える
6
InputStreamReader isr = new InputStreamReader(t.getRequestBody(),"utf-8");
BufferedReader br = new BufferedReader(isr);
// From now on, the right way of moving from bytes to utf-8 characters:
int b;
StringBuilder buf = new StringBuilder(512);
while ((b = br.read()) != -1) {
buf.append((char) b);
}
br.close();
isr.close();
// The resulting string is: buf.toString()
// and the number of BYTES (not utf-8 characters) from the body is: buf.length()
于 2012-06-06T07:36:22.900 に答える
3
Spring MVC を使用している場合は、String 型のメソッド パラメーターで @RequestBody アノテーションを使用できます。例えば。
@RequestMapping(value = "/something", method = RequestMethod.POST)
public void doSomething(@RequestBody String requestBodyString) {
// does something..
}
于 2014-12-29T16:35:01.397 に答える
1
これを試しましたか?
InputStreamReader isr = new InputStreamReader(exchange.getRequestBody(),"utf-8");
BufferedReader br = new BufferedReader(isr);
String value = br.readLine();
于 2012-05-01T05:32:19.677 に答える
1
Commons IO を使用org.apache.commons.io.IOUtils.toString(InputStream, String)
して、これを 1 行で行うことができます。(ただし、HTTPキープアライブでは機能しない場合があります)
編集:
直接 JSON に移行したい場合は、アンマーシャリングを行う Web サービス スタックが多数あります。試す
CXF / JAX-RS: http://cxf.apache.org/docs/jax-rs-data-bindings.html#JAX-RSDataBindings-JSONsupport
于 2012-05-01T07:55:29.650 に答える