【问题标题】:Jetty servlet: How can I forward GET request with parameters as POST request with JSON body?Jetty servlet:如何将带有参数的 GET 请求作为带有 JSON 正文的 POST 请求转发?
【发布时间】:2015-11-18 04:02:17
【问题描述】:

我的网络客户端发送带有 URL 查询参数的 GET 请求。接收 App 只能接受带有 JSON 正文的 POST 请求。我想在接收应用程序中嵌入一个码头 servlet,它将 GET 请求转换为 POST 请求,并将 url 参数转换为 json 格式的正文。

输入 GET url 例如:http://localhost:8081/?key_1=value_1&key_2=3value_2...&key_n=value_n

预期的 POST json 负载:{"key_1":"value_1", "key_2":"value_2", ..."key_n":"value_n"}

能否请您说明如何实现这些功能?

我曾使用过其他编程语言,但对 java 完全陌生。我真的很感谢你的帮助。

感谢和最好的问候, 菲施莱因

【问题讨论】:

    标签: java servlets embedded-jetty


    【解决方案1】:

    您可以读取所有查询字符串参数并将其放入HashMap中。然后使用 jackson-json api 或 google gson api 序列化这个 hashmap。

    杰克逊参考网址:

    http://wiki.fasterxml.com/JacksonHome

    【讨论】:

    • 谢谢。我找到了一些代码,你认为它适合我的需要吗?公共 JSONObject requestParamsToJSON(HttpServletRequest req) { JSONObject jsonObj = new JSONObject(); Map 参数 = req.getParameterMap(); for (Map.Entry entry : params.entrySet()) { String v[] = entry.getValue();对象 o = (v.length == 1) ? v[0] : v; jsonObj.put(entry.getKey(), o); } 返回 jsonObj; }
    【解决方案2】:

    从 get 请求中读取参数,创建一个 json 字符串并将其与一个实用程序库(如http://hc.apache.org/httpclient-3.x/)一起发布

    【讨论】:

    • 谢谢。您能否演示如何使用 org.eclipse.jetty.client.HttpClient 发送发布请求?我没有做对。
    猜你喜欢
    • 1970-01-01
    • 2013-05-30
    • 2018-08-02
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2016-09-29
    • 1970-01-01
    相关资源
    最近更新 更多