Параметр JSON HttpServletRequest обнаружил нулевое значение в сервлете - PullRequest
0 голосов
/ 15 мая 2019

Я использую сервлет для обработки запросов и ответов.

Я использовал следующий код для сервлета моего запроса на субаренду с помощью веб-сервиса:

 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());

Вот мой код сервлета для получения данных.

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

commandid recieve null от веб-сервиса.

Что делать в веб-сервисе для получения данных в сервлете?

Ответы [ 2 ]

1 голос
/ 15 мая 2019

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"));
0 голосов
/ 15 мая 2019

Вы отправляете JSON в теле запроса , поэтому вам необходимо получить его:

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

Преобразовать в JSON:

JSONObject jsonObject = new JSONObject(json);

И получите значение:

String value = jsonObject.getString("commandid");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...