如何访问服务器端的内容?

时间:2013-03-21 17:29:12

标签: java http servlets http-post

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

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 { ... }

请求只允许我访问内容长度和类型,但不能访问内容本身。有什么指针吗?

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

1 个答案:

答案 0 :(得分: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");
// ...