【问题标题】:How to access content at the server end?如何在服务器端访问内容?
【发布时间】:2013-03-21 17:29:11
【问题描述】:

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

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 的内置类。

【问题讨论】:

  • 您可能想告诉我们您使用的是哪种(网络)服务器,以及编程语言/框架。

标签: java http servlets http-post


【解决方案1】:

出于某种原因,您已将字符串设置为唯一的 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");
// ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2019-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多