记录一次微信工具包请求接口Read timed out异常解决方案

556 阅读1分钟

响应异常

2023-01-05 10:57:31.689 [http-nio-8079-exec-1] ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] Line:175 - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is me.chanjar.weixin.common.error.WxRuntimeException: java.net.SocketTimeoutException: Read timed out] with root cause
java.net.SocketTimeoutException: Read timed out
 at java.net.SocketInputStream.socketRead0(SocketInputStream.java)
 at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 at java.net.SocketInputStream.read(SocketInputStream.java:171)
 at java.net.SocketInputStream.read(SocketInputStream.java:141)
 at sun.security.ssl.InputRecord.readFully(InputRecord.java:465)
 at sun.security.ssl.InputRecord.read(InputRecord.java:503)
 at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:983)
 at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:940)
 at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)

引发原因

请求微信公众平台接口,处理时间过长,导致响应超时错误,

源码分析

1.从配置类进入到源码,发现在这里进行初始化信息,初始化时由单例模式类 DefaultApacheHttpClientBuilder实现 image.png 2.进入到DefaultApacheHttpClientBuilder类 发现在类初始化时配置好了响应时长 image.png

解决方案

在配置类初始化配置信息时 手动获得DefaultApacheHttpClientBuilder的实例 并设置好超时时间

image.png