java - 从套接字读取 http post 内容时出现问题,仅获取 header

标签 java http httpclient

服务器

 public void HandleConnection(Socket socket) {
    OutputStream out = socket.getOutputStream();
    InputStream in = socket.getInputStream();
              BufferedReader br = new BufferedReader(new InputStreamReader(in));
              String strLine;
              try {
                while ((strLine = br.readLine()) != null)   {
                  System.out.println (strLine);
                  }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

客户端

public void httpPostTest() {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://192.168.0.2:8080/");

        try {
            httppost.setEntity(new StringEntity("test"));
            HttpResponse response = httpclient.execute(httppost);
        } catch (ClientProtocolException e) {
         e.printStackTrace();
        } catch (IOException e) {
         e.printStackTrace();
        }

    }

对此有什么想法吗?这就是我返回的全部内容,只是标题:

POST / HTTP/1.1
Content-Length: 4
Content-Type: text/plain; charset=ISO-8859-1
Host: 192.168.0.2:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.2 (java 1.5)




public String readLine(InputStream inputStream) {
        StringWriter writer = new StringWriter();
        try {
            IOUtils.copy(inputStream, writer, "ASCII");
        } catch (IOException e) {
            e.printStackTrace();
        }
        String theString = writer.toString();
        return theString.trim();
    }

最佳答案

根据我阅读后的理解,BufferedReader 是从 http post 读取 inputStreams 的糟糕方法。我所经历的是,发出帖子的客户端会挂起,因此每个帖子上的连接处理程序线程,当我杀死客户端时,服务器将停止挂起,我会看到消息正文。根据我在互联网上收集的信息,读取输入流的最佳方法是逐字节地遍历它,并在字节总和==内容长度值后退出循环。

也就是说,我计划使用 Apache HTTPCore 来处理这个问题,因为这似乎是一个更好的解决方案

关于java - 从套接字读取 http post 内容时出现问题,仅获取 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7156078/

相关文章:

http - Socket.io 不设置 CORS header

http - 206 部分未缓存

api - 如何使用相同的端口地址和不同的句柄模式来服务网页和 API 路由

post - Apache HTTP 客户端,POST 请求。如何正确设置请求参数?

java - java 应用程序中数据库密码(和其他重要的私有(private)字符串)的安全性

java - IdentityHashMap 的用例

java - org.apache.bcel.classfile.ClassFormatException : Invalid byte tag in constant pool: 19

java - 在 hadoop mapreduce 应用程序中访问来自其他文件系统的文件以及 hdfs 文件

xamarin - NameResolutionFailure 与 ConnectFailure 问题

android - 在android中释放连接