响应异常
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实现
2.进入到DefaultApacheHttpClientBuilder类 发现在类初始化时配置好了响应时长
解决方案
在配置类初始化配置信息时 手动获得DefaultApacheHttpClientBuilder的实例 并设置好超时时间