首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OKHTTP3抛出ConnectionShutdownException

OKHTTP3抛出ConnectionShutdownException
EN

Stack Overflow用户
提问于 2019-01-29 18:45:49
回答 1查看 5.1K关注 0票数 0

我正在使用okhttp3将图像发送到服务器,如下所示:

代码语言:javascript
复制
final OkHttpClient cliente=new OkHttpClient();

    HttpUrl.Builder urlBuilder = HttpUrl.parse(getString(R.string.sendimageurl)).newBuilder();

    String url = urlBuilder.build().toString();
    Request request=new Request.Builder()
            .addHeader("imagebase64", toBASE64(bitmap))
            .addHeader("token", almacen.getToken())
            .url(url)
            .build();

(是的,params是在报头中发送的,不要责怪我,它就是构建服务的方式)。

它总是进入onFailure()方法,启动ConnectionShutdownException:

代码语言:javascript
复制
okhttp3.internal.http2.ConnectionShutdownException
at okhttp3.internal.http2.Http2Connection.newStream(Http2Connection.java:248)
at okhttp3.internal.http2.Http2Connection.newStream(Http2Connection.java:231)
at okhttp3.internal.http2.Http2Codec.writeRequestHeaders(Http2Codec.java:117)
at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:50)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:45)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:254)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:200)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

我不会在我的调用中设置任何拦截器。

我可以做些什么来发送我的图像?

谢谢。

编辑:

在克里斯托弗的建议之后,我这样做:

代码语言:javascript
复制
final OkHttpClient cliente=new OkHttpClient();

    OkHttpClient client1 = cliente.newBuilder()
            .readTimeout(10000, TimeUnit.MILLISECONDS)
            .build();

    HttpUrl.Builder urlBuilder = HttpUrl.parse(getString(R.string.sendimageurl)).newBuilder();

    String url = urlBuilder.build().toString();
    Request request=new Request.Builder()
            .addHeader("imagebase64", toBASE64(bitmap))
            .addHeader("token", almacen.getToken())
            .url(url)
            .build();
    client1.newCall(request).enqueue(new Callback() {
       //stuff
     }

但是没有结果,同样的异常。

编辑2:

在sea cat回答之后,我意识到这应该是一个POST请求。更改为:

代码语言:javascript
复制
final OkHttpClient cliente=new OkHttpClient();

    HttpUrl.Builder urlBuilder = HttpUrl.parse(getString(R.string.sendimageurl)).newBuilder();

    String url = urlBuilder.build().toString();
    RequestBody requestBody = new MultipartBody.Builder()
            .setType(MultipartBody.FORM)
            .addFormDataPart("imagebase64", toBASE64(bitmap))
            .addFormDataPart("token", almacen.getToken())
            .build();

    Request request=new Request.Builder()
            .addHeader("imagebase64", toBASE64(bitmap))
            .addHeader("token", almacen.getToken())
            .url(url)
            .post(requestBody)
            .build();

(数据必须在headers中发送,但post需要addFormDataPart,所以我也在那里添加了它们),但例外是相同的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 19:20:09

您的请求是get()类型。这是你想要的吗?

(我没有名气来评论)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54419279

复制
相关文章

相似问题

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