【发布时间】:2015-02-14 22:38:35
【问题描述】:
如何读取作为 POST 到 GAE java 应用程序的有效负载的字符串/字节数组?
有没有一种简单的方法可以在不使用 Jackson / jersey 或类似库的情况下获取这些字节?
Angular 端使用类似的东西:
$http({
method : 'POST',
url : 'http://APPID.appspot.com/api/get-reference-locales-for',
data : {
'param' : value,
'param2' : value2
})
Java端有
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { ...
我希望有一种简单的方法可以从 req 对象中获取字符串 {'param':1,'param':2},但我似乎可以找到它。
【问题讨论】:
-
它不是以 JSON 格式发布的吗?它以 HTML 表单的形式发布 - 你知道,作为查询参数。
-
我认为它在请求正文/有效负载中作为 JSON 发送。知道如何从那里阅读吗?
-
您应该考虑使用更高级别的抽象、MVC 或类似的东西,如 spring、struts、thundr 等。如果您希望自己直接执行此操作,则需要将 req.getInputStream() 使用到字节数组,然后使用正确的字符编码将其转换为字符串,该字符串将在请求标头中。
-
如果是 JSON 那么我不知道你为什么不使用 Jackson 来解析请求正文。这就是它的用途。如果您不想要依赖项,请改用 javax.json。
-
只是为了说明即使发送的 JSON 格式不正确,我也希望能够控制输出 - 或者甚至能够测试发送的内容是否是 JSON。因此,如果数据不完全是 JSON,则自动响应错误的库不适合我。
标签: java google-app-engine post