【问题标题】:Get body content using HttpServletRequest in Jersey在 Jersey 中使用 HttpServletRequest 获取正文内容
【发布时间】:2011-07-03 03:20:32
【问题描述】:

我正在使用 Jersey 1.7,我正在尝试以与此问题非常相似的方法访问请求正文: How do I read POST parameters for a RESTful service using Jersey? 正文值可以作为 email=xx@ws.com&password=test1

我尝试使用 @Context HttpServletRequest 请求并尝试使用 request.getParameter("email") 访问电子邮件,但一无所获。 request.getparameterMap() 里面也没有任何内容。

我的 API 如下所示: @邮政 @Produces(...) public Response getData(@FormParam("email") String email, @FormParam("password") String password, String body, @Context HttpServletRequest request) { ....

我尝试更改字符串主体和请求的位置,但无济于事。

字符串正文得到的值非常好(它来自 iPhone 设备,而不是通过表单提交,因此显示在字符串正文中)。现在,我正在尝试解析正文内容(email=xx@ws.com&password=test1)并获取每个变量,例如电子邮件,但这很痛苦。

有没有办法使用 request.getParameter("email") 获取值?

或者有什么快速的工具可以将正文内容转换为字符串电子邮件和字符串密码?

TIA, 维杰

【问题讨论】:

    标签: post jersey


    【解决方案1】:

    我自己从未使用过表单参数,但文档说它应该永远有效:

    @POST
    @Consumes("application/x-www-form-urlencoded")
    public void post(MultivaluedMap<String, String> formParams) {
        // Store the message
    }
    

    http://wikis.sun.com/display/Jersey/Overview+of+JAX-RS+1.0+Features

    【讨论】:

    • 呼叫是从移动设备发出的,并且不使用表单提交(在 Android 等上使用 httpClient)。因此,使用 x-www-form-urlencoded 仅适用于我的测试示例表单提交。感谢您的回复。我将测试并查看 MultivaluedMap 是否有效。
    • 您能否分享一个来自这个特定客户端的示例 HTTP 请求?
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 2022-06-10
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多