2016-10-28 5 views
0

私はAndroidアプリケーションでRetrofit 1.9を使用しています。java.io.IOException:ストリームがリセットされました:いくつかのデバイスのREFUSED_STREAM

サーバはDjangoとNginx、HTTPSはHTTP 2.証明書はWoSignのもので、SSL Labsの "A"スコアです。

私は3つのデバイス上でテストしています:

  • ネクサス4、アンドロイド5.1.1(公式)
  • ネクサス9、アンドロイド7.0(公式)
  • サムスンギャラクシーS3、アンドロイド4.4(公式SGS3オン)

それがうまく動作しますが、Nexus 4の& 9に、私は例外を取得しています:

java.io.IOException: stream was reset: REFUSED_STREAM 
                   at com.squareup.okhttp.internal.framed.FramedStream.getResponseHeaders(FramedStream.java:146) 
                   at com.squareup.okhttp.internal.http.Http2xStream.readResponseHeaders(Http2xStream.java:150) 
                   at com.squareup.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:737) 
                   at com.squareup.okhttp.internal.http.HttpEngine.access$200(HttpEngine.java:87) 
                   at com.squareup.okhttp.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:722) 
                   at com.squareup.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:576) 
                   at com.squareup.okhttp.Call.getResponse(Call.java:287) 
                   at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:243) 
                   at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:205) 
                   at com.squareup.okhttp.Call.execute(Call.java:80) 
                   at retrofit.client.OkClient.execute(OkClient.java:53) 
                   at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326) 
                   at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220) 
                   at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278) 
                   at retrofit.CallbackRunnable.run(CallbackRunnable.java:42) 
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                   at retrofit.Platform$Android$2$1.run(Platform.java:142) 
                   at java.lang.Thread.run(Thread.java:761) 

答えて

0

私はこれを解決しました。これはNginxですbug

この問題はNginx 1.11で修正されました。したがって、解決策はNGINX 1.11(現在のメインライン)に更新することです。

0

私の場合、nginxはすでに1.11.xにアップデートされていました。私の犯人は大丈夫だったし、改造していた。 PUTリクエストを作成しようとすると、stream was reset: REFUSED_STREAMで失敗します。

が、私は一度に私がこれを書いているの両方の最新バージョンにアップグレードし、それを修正するには、次のとおりです。

compile 'com.squareup.retrofit2:retrofit:2.1.0' 
compile 'com.squareup.okhttp3:okhttp:3.5.0' 

あなたがレトロフィットの2.0.xまたはokhttpの3.1.xを使用している場合は、アップグレードによって問題が解決されるはずです。

関連する問題