1

我在客户端中使用了以下代码:

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

我现在想访问服务器端的字符串。处理方法如下所示:

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

该请求只允许我访问内容长度和类型,而不是内容本身。任何指针?

我使用 java 作为 pl 和 javax.servlet 的内置类。

4

1 回答 1

0

由于某种原因,您已将字符串设置为唯一的 HTTP 请求正文,而不是请求参数。因此,要获得它,您需要阅读整个 HTTP 请求正文。这是在可用的 servlet 中

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));

这样你就可以在 servlet 中做

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