1

クライアントで次のコードを使用しました。

HttpPost post = new HttpPost(url);
post.setEntity(new ByteArrayEntity(myString.getBytes("UTF8")));
HttpResponse response = this.execute(post);

サーバー側の文字列にアクセスしたいと思います。handleメソッドは次のようになります。

public void handle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException { ... }

リクエストでは、コンテンツの長さとタイプにのみアクセスでき、コンテンツ自体にはアクセスできません。ポインタはありますか?

plとしてjavaを使用しており、javax.servletの組み込みクラスを使用しています。

4

1 に答える 1

0

何らかの理由で、文字列をリクエストパラメータとしてではなく、唯一のHTTPリクエスト本文として設定しました。したがって、それを取得するには、HTTPリクエストの本文全体を読み取る必要があります。これは、によって利用可能なサーブレットにあります

InputStream input = request.getInputStream();
// Read it into a String the usual way (using UTF-8).

getParameter()これは、事前に読み取られている場合、たとえば、POSTリクエスト本文を暗黙的に解析するまったく同じリクエストを事前に呼び出すことによって、空のストリームを返すことに注意してください。

より適切なアプローチは、次のように通常のURLエンコードされたリクエストパラメータとして送信することです(デフォルトのHTMLフォームとまったく同じです)

List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("myString", myString));
post.setEntity(new UrlEncodedFormEntity(params));

サーブレットで実行できるように

String myString = request.getParameter("myString");
// ...
于 2013-03-21T19:09:38.510 に答える