簡體   English   中英

HttpServletRequest InputStream讀取返回-1

[英]HttpServletRequest InputStream read return -1

我正在嘗試讀取InputStream請求,但已到達流的末尾。

唯一的類(servlet)是:


    public class TestServlet extends HttpServlet
    {
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {
            InputStream clientIn = request.getInputStream();
            OutputStream clientOut = response.getOutputStream();
            byte[] buffer = new byte[4096];
            int n;
            try
            {
                while ((n = clientIn.read(buffer)) != -1)    // --------->  Here, n is -1
                {
                    System.out.println(new String(buffer,0,n));
                    clientOut.write(("Ok = " + n).getBytes());
                }
            }
            catch (Exception e)
            {
                System.err.println(e);
            }
        }
    }

沒有任何其他類(例如過濾器,偵聽器或其他servlet)

客戶端代碼為:

public class Main
    {
        public static void main(String[] args) throws IOException, InterruptedException
        {   
            String postCommand = "POST / HTTP/1.1\r\n" +
                    "Host: localhost\r\n" +
                    "Content-Type: binary/octet-stream\r\n" +
                    "Connection: keep-alive\r\n\r\n" +
                    "name1=value1&name2=value2";

            Socket socket = new Socket("localhost", 8080);
            InputStream serverIn = socket.getInputStream();
            OutputStream serverOut = socket.getOutputStream();
            serverOut.write(postCommand.getBytes());
            int n = 0, count = 1;
            byte[] buffer = new byte[4096];
            do
            {
                if (n != 0)
                    System.out.println(new String(buffer, 0, n));
                serverOut.write(("foo " + count).getBytes());
            } while ((n = serverIn.read(buffer)) != -1 && count++

先感謝您。 親切的問候!

您的客戶端沒有發送有效的HTTP 1.1。 沒有內容長度標頭,因此Servlet無法知道何時停止讀取。 流沒有實際結束,因為HTTP客戶端必須保持連接打開才能讀取響應。

使用HttpURLConnection。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM