我在客户端使用了以下代码:
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的内置类。
答案 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");
// ...