Я пишу приложение для загрузки файлов. Я могу подключиться к серверу и загрузить файл (apache http) с помощью метода asyn.
Сервер установил ограничение на количество подключений до 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 секунд до отключения активного соединения? Кроме того, можно ли узнать, когда соединение установлено?