sotimeout не работает в многочастном посте http на Android 2.1 - PullRequest
2 голосов
/ 18 апреля 2011

Я использую apache httpclient, который поставляется вместе с android sdk, чтобы загрузить файл на сервер с помощью составного сообщения http. Проблема заключается в том, что когда я отключаю соединение Wi-Fi на моем устройстве, и у устройства нет доступа к Интернету и события после установки времени ожидания и времени ожидания соединения, код бесконечно висит на операторе httpclient.execute(), и это происходит каждый раз.

мой код:

HttpClient httpclient = new DefaultHttpClient();

HttpConnectionParams.setSoTimeout(httpclient.getParams(), 5000);
ConnManagerParams.setTimeout( httpclient.getParams(), 5000 ); 

HttpConnectionParams.setSocketBufferSize(httpclient.getParams(), 8192);

HttpPost("http://myurl");

File file = new File(fileAbsolutePath);
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file);
mpEntity.addPart("uploadedfile", cbFile);
httppost.setEntity(mpEntity);
if(!backupCancel)
{
    System.out.println("<<<<<<<<<<<<<<<<<<<<<<Actually transferring file>>>>>>>>>>>>>>>");
    HttpResponse response = httpclient.execute(httppost);
}

Ответы [ 2 ]

3 голосов
/ 18 апреля 2011

Попробуйте это:

Предполагается, что у вас есть объект httpClient, который является экземпляром AndroidHttpClient или DefaultHttpClient

HttpParams httpParams = httpClient.getParams();
httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, Timeout in milli seconds);

httpParams, который вы получаете, является эталонным объектом, поэтому его выполнение setIntParameter решит проблему

Если у вас нет особых требований к пользовательским тайм-аутам, предпочтите использование AndroidHttpClient, это очень полезно и решает большинство наших проблем :) удачи

0 голосов
/ 18 апреля 2011

Я думаю, вы должны использовать

HttpParams lHttpParams = new  BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(lHttpParams, 3000);
HttpConnectionParams.setSoTimeout(lHttpParams, 3000);

С наилучшими пожеланиями,
~ Anup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...