当我使用okhttp3发送delete请求时,它抛出了java.io.InterruptedIOException: interrupted,我不知道要去哪里wrong.This是我的代码:
public String runDelete(String url, String token,Object sendRequest) {
String result = null;
try {
RequestBody requestBody = FormBody.create(MediaType.parse("application/json; charset=utf-8")
, JSON.toJSONString(sendRequest));
Request request = new Request.Builder()
.url(url)
.delete(requestBody)
.addHeader("token", token)
.build();
try (okhttp3.Response response = httpClient.newCall(request).execute()) {
result = response.body().string();
}
} catch (Exception e) {
log.error("调用delete失败", e);
}
return result;
}这是日志:
java.io.InterruptedIOException: interrupted
at okio.Timeout.throwIfReached(Timeout.kt:116) ~[okio-2.2.2.jar:na]
at okio.OutputStreamSink.write(Okio.kt:62) ~[okio-2.2.2.jar:na]
at okio.AsyncTimeout$sink$1.write(AsyncTimeout.kt:106) ~[okio-2.2.2.jar:na]
at okio.RealBufferedSink.flush(RealBufferedSink.kt:222) ~[okio-2.2.2.jar:na]
at okhttp3.internal.http1.Http1ExchangeCodec.finishRequest(Http1ExchangeCodec.kt:158) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.connection.Exchange.finishRequest(Exchange.kt:90) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:76) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:37) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:82) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:71) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:112) ~[okhttp-4.0.0.jar:na]
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:87) ~[okhttp-4.0.0.jar:na]
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.kt:184) ~[okhttp-4.0.0.jar:na]
at okhttp3.RealCall.execute(RealCall.kt:66) ~[okhttp-4.0.0.jar:na]
at com.sportswin.soa.robot.common.OkHttpClientUtil.runDelete(OkHttpClientUtil.java:63) ~[classes/:na]
at com.sportswin.soa.robot.service.impl.RobotRoomService.exit(RobotRoomService.java:65) [classes/:na]
at com.sportswin.soa.robot.service.impl.RobotRoomService$$FastClassBySpringCGLIB$$5bc857ba.invoke(<generated>) [classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72) [druid-1.1.9.jar:1.1.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.sportswin.soa.robot.service.impl.RobotRoomService$$EnhancerBySpringCGLIB$$37a5f202.exit(<generated>) [classes/:na]
at com.sportswin.soa.robot.service.impl.RobotRoomService$$FastClassBySpringCGLIB$$5bc857ba.invoke(<generated>) [classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) [spring-core-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.alibaba.druid.support.spring.stat.DruidStatInterceptor.invoke(DruidStatInterceptor.java:72) [druid-1.1.9.jar:1.1.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688) [spring-aop-5.1.6.RELEASE.jar:5.1.6.RELEASE]
at com.sportswin.soa.robot.service.impl.RobotRoomService$$EnhancerBySpringCGLIB$$5c00ce5c.exit(<generated>) [classes/:na]
at com.sportswin.soa.robot.websocket.client.WebsocketClientEndpoint.exitRoom(WebsocketClientEndpoint.java:157) [classes/:na]
at com.sportswin.soa.robot.websocket.client.WebsocketClientEndpoint.onClose(WebsocketClientEndpoint.java:117) [classes/:na]
at sun.reflect.GeneratedMethodAccessor460.invoke(Unknown Source) ~[na:na]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:45005) ~[na:1.8.0_211]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_211]
at org.apache.tomcat.websocket.pojo.PojoEndpointBase.onClose(PojoEndpointBase.java:103) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsSession.fireEndpointOnClose(WsSession.java:555) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:501) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsFrameClient.close(WsFrameClient.java:132) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsFrameClient.access$100(WsFrameClient.java:31) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.failed(WsFrameClient.java:175) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.failed(WsFrameClient.java:148) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.AsyncChannelWrapperSecure$WrapperFuture.fail(AsyncChannelWrapperSecure.java:472) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at org.apache.tomcat.websocket.AsyncChannelWrapperSecure$ReadTask.run(AsyncChannelWrapperSecure.java:339) [tomcat-embed-websocket-9.0.17.jar:9.0.17]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_211]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_211]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_211]我在网上搜索,没有人统计错误。
发布于 2020-03-05 17:37:44
我尝试更改另一种处理请求的方式:
private void startRequestWithOkHttp3(String url, String token) {
okhttp3.OkHttpClient mOkHttpClient = new okhttp3.OkHttpClient();
final okhttp3.Request request = new okhttp3.Request.Builder()
.url(url)
.delete()
.addHeader("token", token)
.build();
//new call
okhttp3.Call call = mOkHttpClient.newCall(request);
call.enqueue(new okhttp3.Callback() {
@Override
public void onFailure(okhttp3.Call call, final IOException e) {
log.error("failed", e);
}
@Override
public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {
log.info("success", response);
}
});
}https://stackoverflow.com/questions/57554990
复制相似问题