Как я могу обрабатывать данные, которые передаются в теле GET-запроса с использованием сервлета?
Я использую небольшой хостинг vServer (netcup), работающий на сервере Ubuntu 18.04 в качестве ОС и Tomcat 9.
Для имитации http-запросов я использую Postman. В приведенном ниже примере кода (это только метод doGET) я реализовал небольшую программу, которая обрабатывает входящие данные «value1» из строки запроса входящего GET-запроса. Когда я пытаюсь передать тот же параметр в теле сообщения, я получаю следующую ошибку:
HTTP Status 500 ? Internal Server Error
Type: Exception Report, Message: null
Description: The server encountered an unexpected condition that prevented
it from fulfilling it from fulfilling the request
java.lang.NumberFormatException: null
java.lang.Integer.parseInt(Integer.java:542)
java.lang.Integer.parseInt(Integer.java:615)
myServlet1.doGet(myServlet1.java:25)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Как мне изменить код, чтобы разрешить передачу через GET-тело? Если я передаю данные с помощью строки запроса (например) "http://localhost: 8080 ...? Value1 = 10 ", то все работает нормально.
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/myServlet1")
public class myServlet1 extends HttpServlet {
private static final long serialVersionUID = 1L;
public myServlet1() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
String value1s= request.getParameter("value1");
int a=Integer.parseInt(value1s); //
a=a+10;
writer.println("<html>");
writer.println("<head><title>Hello World Servlet</title></head>");
writer.println("<body>");
writer.println(" <h1>Hello value from a Servlet!</h1>");
writer.println("<h1>transmitted value: " + a + "</h1>");
writer.println("<body>");
writer.println("</html>");
writer.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Я очень благодарен за каждый совет и подсказку!