ファイルアップロードアプリを書いています。asynメソッドを使用してサーバーに接続し、ファイル(apache http)をアップロードできます。
サーバーは接続数の制限を100に設定しました。接続が60秒間続く場合、接続を切断するために接続タイムアウトを設定したいと思います。
フローは次のとおりです。
(1)Androidクライアントがサーバーへの接続を確立します。(60秒間カウントを開始)
(2)60秒間接続がまだ有効な場合は、Androidクライアントから切断します
HttpParamsにタイムアウトを設定しても機能しないことはわかっています。どうすればいいのかわからない。
誰もがそれを行う方法のアイデアを持っていますか?任意の解決策や提案を歓迎します。ありがとう!
ファイルをアップロードする方法のコードスニペットは次のとおりです。
try
{
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
HttpConnectionParams.setSoTimeout(httpParameters, 60000);
HttpClient client = new DefaultHttpClient(httpParameters);
...
ByteArrayBody bab = new ByteArrayBody(byteArray, "photo.jpg");
entity.addPart("photo", bab);
httpPost.setEntity(entity);
startTime = System.currentTimeMillis();
//ClientConnectionRequest connRequest = new ManagedClientConnection();
//httpPost.setConnectionRequest((ClientConnectionRequest) connRequest.getConnection(3000, TimeUnit.MILLISECONDS));
HttpResponse response = client.execute(httpPost, localContext);
Handler mHandler = new Handler();
BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent(), "UTF-8"));
String result = "";
String tmp = "";
while ((tmp = reader.readLine()) != null)
{
result += tmp;
}
reader.close();
return result;
} catch (Exception e) {
Log.e(TAG, "error time = " + (System.currentTimeMillis() - startTime));
Log.e("httpUploadHandler", "Some error came up");
Log.e("httpUploadHandler", e.toString());
}
次の電話で接続を切断できます。
client.getConnectionManager().shutdown();
しかし、生きている接続を切断するために60秒を数えるにはどうすればよいですか?また、いつ接続が確立されたかを知ることはできますか?