【问题标题】:Java.net.SocketException: Connection or outbound has closedJava.net.SocketException:连接或出站已关闭
【发布时间】:2020-11-25 06:00:26
【问题描述】:

我在调用外部沙箱时看到了这个问题。我发现它发生在 java 版本中。有没有人以前见过这个问题并解决了它? 这会间歇性发生。

Sandbox 解析响应时返回 200 并抛出错误

java 版本:1.8.0_275 + 沙盒调用 => 不工作

java 版本:1.8.0_202 + 沙盒调用 => 运行良好

使用改造 2.3.0,Okhttp 3.8.0

java.net.SocketException: Connection or outbound has closed
    at sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:967)
    at okio.Okio$1.write(Okio.java:79)
    at okio.AsyncTimeout$1.write(AsyncTimeout.java:180)
    at okio.RealBufferedSink.flush(RealBufferedSink.java:216)
    at okhttp3.internal.http2.Http2Writer.rstStream(Http2Writer.java:152)
    at okhttp3.internal.http2.Http2Connection.writeSynReset(Http2Connection.java:315)
    at okhttp3.internal.http2.Http2Stream.close(Http2Stream.java:226)
    at okhttp3.internal.http2.Http2Stream.cancelStreamIfNecessary(Http2Stream.java:454)
    at okhttp3.internal.http2.Http2Stream$FramingSource.close(Http2Stream.java:428)
    at okio.ForwardingSource.close(ForwardingSource.java:43)
    at okhttp3.internal.http2.Http2Codec$StreamFinishingSource.close(Http2Codec.java:199)
    at okio.RealBufferedSource.close(RealBufferedSource.java:455)
    at okio.RealBufferedSource.close(RealBufferedSource.java:455)
    at okio.InflaterSource.close(InflaterSource.java:126)
    at okio.GzipSource.close(GzipSource.java:182)
    at okio.RealBufferedSource.close(RealBufferedSource.java:455)
    at okio.ForwardingSource.close(ForwardingSource.java:43)
    at okio.RealBufferedSource.close(RealBufferedSource.java:455)
    at okio.RealBufferedSource$1.close(RealBufferedSource.java:443)
    at sun.nio.cs.StreamDecoder.implClose(StreamDecoder.java:378)
    at sun.nio.cs.StreamDecoder.close(StreamDecoder.java:193)
    at java.io.InputStreamReader.close(InputStreamReader.java:199)
    at okhttp3.ResponseBody$BomAwareReader.close(ResponseBody.java:258)
    at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._closeInput(ReaderBasedJsonParser.java:193)
    at com.fasterxml.jackson.core.base.ParserBase.close(ParserBase.java:368)
    at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1622)
    at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1203)
    at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:32)
    at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
    at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:119)
    at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:218)
    at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:112)
    at okhttp3.RealCall$AsyncCall.execute(RealCall.java:141)
    at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
    at au.com.auspost.utils.MDCUtils.lambda$mdcRunnable$0(MDCUtils.java:24)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

【问题讨论】:

标签: java retrofit2 okhttp


【解决方案1】:

在将 retrofit2 库迁移到版本 2.8.1 后,此问题已得到解决。在迁移到最新的retrofit2库后,我们遇到了认证验证问题。我们已通过生成新证书解决了认证问题。

【讨论】:

    猜你喜欢
    • 2021-03-17
    • 2021-10-01
    • 2013-04-29
    • 2020-11-16
    • 1970-01-01
    • 2014-08-28
    • 2022-01-10
    • 1970-01-01
    相关资源
    最近更新 更多