首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.io.InterruptedIOException:使用okhttp3 delete时中断

java.io.InterruptedIOException:使用okhttp3 delete时中断
EN

Stack Overflow用户
提问于 2019-08-19 18:32:58
回答 1查看 607关注 0票数 0

当我使用okhttp3发送delete请求时,它抛出了java.io.InterruptedIOException: interrupted,我不知道要去哪里wrong.This是我的代码:

代码语言:javascript
复制
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;
    }

这是日志:

代码语言:javascript
复制
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]

我在网上搜索,没有人统计错误。

EN

回答 1

Stack Overflow用户

发布于 2020-03-05 17:37:44

我尝试更改另一种处理请求的方式:

代码语言:javascript
复制
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);
            }
        });
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57554990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档