java - 如何修复 java.net.SocketException : Broken pipe?

标签 java exception post sockets

我正在使用 apache commons http 客户端使用 post 方法调用 url 来发布参数,并且很少抛出以下错误。

java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
        at java.io.FilterOutputStream.write(FilterOutputStream.java:80)
        at org.apache.commons.httpclient.methods.ByteArrayRequestEntity.writeRequest(ByteArrayRequestEntity.java:90)
        at org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:499)
        at org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:2114)
        at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1096)
        at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)

有人可以建议是什么原因导致此异常以及如何调试它吗?

最佳答案

这是由于:

  • 最常见的是,当另一端已经关闭连接时写入连接;
  • 不太常见的是,对等方关闭连接而不读取其端已挂起的所有数据。

因此,在这两种情况下,您都有一个定义或实现不明确的应用程序协议(protocol)。

还有第三个原因,我不会在这里记录,但它涉及对等方故意采取行动来重置而不是正确关闭连接。

关于java - 如何修复 java.net.SocketException : Broken pipe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59949169/

相关文章:

php - 我将如何使用 PHP 异常来定义重定向?

javascript - 将 Ajax 数据发布到 PHP REST 服务

REST 使用外部 ID 创建资源

java - 获取父类(super class)中 servlet 的响应对象

java - Spring HttpHeaders - 获取授权 header

java - 在返回与其对象相同类型的值的 final方法中使用泛型

java - 没有找到默认构造函数;嵌套异常是 java.lang.NoSuchMethodException bean 配置

c++ - 在 C++ 中捕获默认异常

json - 如何在cakephp中发送json帖子

java - 在 Java 中请求输入时忽略 nextLine