Java 如何从通过HttpClient post发送的另一个servlet读取参数?

Java 如何从通过HttpClient post发送的另一个servlet读取参数?,java,servlets,httpclient,Java,Servlets,Httpclient,我必须从一个servlet到另一个servlet使用HttpClient post CloseableHttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost( "http://localhost:8080/FitsServlets/GisServlet"); post.setHeader("Referer", "http://localhost/something"); post

我必须从一个servlet到另一个servlet使用HttpClient post

CloseableHttpClient client = HttpClients.createDefault();
HttpPost post = new HttpPost(
        "http://localhost:8080/FitsServlets/GisServlet");

post.setHeader("Referer", "http://localhost/something");
post.setHeader("Content-type", "application/json");

StringEntity params=new StringEntity("test..");

post.setEntity(params);
HttpResponse responseGis = client.execute(post);
我想读取从另一个servlet接收到的参数,但它不起作用。这是接收post并需要读取参数的servlet的代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    System.out.println("gis..");

    Enumeration<String> parameterNames = request.getParameterNames();

    while (parameterNames.hasMoreElements()) {

        String paramName = parameterNames.nextElement();
        System.out.println("name:" + paramName);
        String[] paramValues = request.getParameterValues(paramName);

        for (int i = 0; i < paramValues.length; i++) {

            String paramValue = paramValues[i];
            System.out.println("value: " + paramValue);
        }
    }
}
有人能帮我吗


谢谢

实际上,我认为您正在尝试将请求负载作为请求参数来读取

由于您要将字符串作为实体发送到第二个Servlet,因此您应该打开一个到请求的流链,然后将其作为InputStream的基础,并提取内容:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
  // Do whatever you want here...
  InputStream is = request.getInputStream();      
  if (is != null) {
    StringBuilder sb = new StringBuilder();
    String line;
    try {
        BufferedReader reader = 
          new BufferedReader(new InputStreamReader(is, "UTF-8"));
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
    } finally {
        is.close();
    }
    System.out.println(sb.toString());
  }
  //...
}

你什么意思,但不起作用?您能详细说明一下吗?它打印gis..但不读取参数..我对字符串requestBody=IOUtils.toStringinput有问题;它给了我一个错误,我不能使用toString.。不适用于参数InputStream.。似乎您引用了错误的IOUtils类。我将更新我的答案,使用基本的IO材料,没有第三方库。你能解决你的问题吗?如果您对答案感到满意,您可以接受答案并投票: