无法从Servlet检索数据

问题描述 投票:1回答:3

我正在尝试在HttpURLConnection中写一些消息,并且试图在Servlet中检索它。这是两个不同的应用程序。

消息写代码 ((无异常处理)] >>

   public static void formUrlAndWrite() 
   {
    URL url = null;
    HttpURLConnection httpConnection = null;
    OutputStreamWriter outStream = null;
    String host = "http://127.0.0.1:8080/HttpTester";
    url = new URL(host);
    httpConnection = (HttpURLConnection) url.openConnection();
    httpConnection.setDoOutput(true);
    httpConnection.setAllowUserInteraction(true);
    httpConnection.setDefaultUseCaches(false);  
    outStream = new OutputStreamWriter(httpConnection.getOutputStream());
    outStream.write("This is a plain text");
    outStream.flush();
}

Servlet代码

((无异常处理)
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
        BufferedReader reader = null;
        PrintWriter out = null;
        StringBuffer buffer = new StringBuffer();
        try
        {
            //reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
            reader = request.getReader();
            int read = 0;
            char[] charArray = new char[2000];

            while((read=reader.read(charArray))>-1)
            {
                buffer.append(charArray, 0, read);
            }
            response.setContentType("text/html");
            out = response.getWriter();

            out.println("<html><body>");
            out.print("<h2> Request Buffer is"+buffer+"</h2>");
            out.println("</body></html>");
        } 
}

这两个应用程序正在异步运行,并且我没有从servlet获得输出。我的疑问是,如果我运行消息写入应用程序,它将在url中写入数据。然后,当我运行servlet时,它如何获得请求?可能我在这方面做错了。任何帮助表示赞赏。

我尝试了下面的URL,该URL与我的问题非常相似,但没有帮助。

Getting request payload from POST request in Java servlet

我正在尝试在HttpURLConnection中编写一些消息,并且试图在Servlet中检索相同的消息。这是两个不同的应用程序。消息写代码(无异常处理)...

java servlets
3个回答
1
投票

如果无法在第二个servlet中检索任何数据,则可能是因为您在某处调用了request.getParameter() request.getParameter()之类的东西。实际上,这些方法调用/getParameterValues()/getParameterMap(),并且您只能读取一次请求的内容。


0
投票

我曾在android中使用此代码,可能会对您有所帮助,可能不是完整的解决方案


0
投票

我认为您应该将结果强制转换为字符串,因此代码与此类似(在Servlet页面中):字符串uname =(String)request.getParameter(“ key1”); //广播到字符串字符串密码=(字符串)request.getParameter(“ key2”); //广播到字符串

© www.soinside.com 2019 - 2024. All rights reserved.