0
接続が多すぎるため、開いているファイルの問題のためにサーバーがハングアップしています。APIリクエストにokhttp3を使用しています。しかし、新しい接続プールが作成されるたびに新しい要求が発生すると、
私は、新しいオブジェクトに私がGETとPOSTメソッドのための別の方法を書かれている。その後
OkHttpClient client = new OkHttpClient.Builder().sslSocketFactory(sslContext.getSocketFactory())
.build();
たびに作成コンストラクタを持っています。:応答断片もしくは活性における取り扱われる「()はresponse.code」に基づいて、その後
Response response = null;
Request.Builder requestBuilder = new Request.Builder();
requestBuilder.url(url);
requestBuilder.header("appId", BuildConfig.APPLICATION_ID);
requestBuilder.header("appVersion", BuildConfig.VERSION_NAME);
requestBuilder.header("deviceId", UserPrefs.getDeviceID());
requestBuilder.header("accessToken", UserPrefs.getAccessToken());
requestBuilder.header("versionCode", String.valueOf(BuildConfig.VERSION_CODE));
requestBuilder.header("securityCounter", UserPrefs.getSecurityToken());
Request okHttpRequest = requestBuilder.build();
OkHttpClient.Builder b = new OkHttpClient.Builder();
b.readTimeout(65, TimeUnit.SECONDS);
b.writeTimeout(65, TimeUnit.SECONDS);
b.connectTimeout(65, TimeUnit.SECONDS);
client = b.build();
response = client.newCall(okHttpRequest).execute();
。最後に、
私はresponse.close()を呼び出しています。
フラグメント内で、私は非同期クラスを作成し、doInBackgroundメソッドでこのGETとPOSTメソッドを呼び出すと、応答は同じクラスのonPostExecuteメソッドで処理されます。代わりに、我々は、接続プールを再利用することができ、常に新しい接続を作成するためのこの
OkHttpClientAPI okHttpClientAPI = new OkHttpClientAPI(LoginActivity.this);
response = okHttpClientAPI.doPostRequest(url, formBody, LoginActivity.this);
同様
。
したがって、サーバー側の65535カウントを超えません。
それは新しい接続の問題を解決するのでしょうか? –
はい、接続は常に1つだけになります。あなたは完全なコードが必要な場合は私が助けることができる質問 – Rajasekhar
私は変更を試みた。それでも、サーバーでは、各要求に対して新しい接続が確立されていることがわかります。だから私はそれについてもっと理解する必要があります。 –