HttpServletRequest JSON参数在Servlet中找到空值

时间:2019-05-15 12:26:20

标签: java json rest servlets

我正在使用Servlet处理请求和响应。

我已使用以下代码对我的请求进行Servlet调用,以使用Web服务进行转租:

 JSONObject parans = new JSONObject();
    parans.put("commandid", "Enamu7l");
    System.out.println("parans = " + parans);        
    Client restClient = Client.create();
    WebResource webResource = restClient.resource("URL");
    ClientResponse resp = webResource.accept(MediaType.APPLICATION_JSON)
            .post(ClientResponse.class, parans.toJSONString());

这是我的servlet代码,用于接收数据。

 @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String commandid= request.getParameter("commandid");        
    System.out.println(commandid);       
}

commandid从Web服务接收null

在Web服务中如何获取servlet中的数据?

2 个答案:

答案 0 :(得分:1)

WebResource不会将数据作为url的一部分发送,因此您可以使用request.getParameter。数据使用post方法作为请求正文发送。使用读取器读取数据。

       StringBuilder sb = new StringBuilder();
        while ((s = request.getReader().readLine()) != null) {
            sb.append(s);
        }
       JSONObject jSONObject = new JSONObject(sb.toString());

        System.out.println(jSONObject.getString("commandid"));

答案 1 :(得分:0)

您要在请求正文中发送JSON,因此您需要获取它:

String json = request.getReader().lines().collect(Collectors.joining());

转换为JSON:

JSONObject jsonObject = new JSONObject(json);

并获取值:

String value = jsonObject.getString("commandid");