Использование httpGet в потоке, чтобы отправить последнее обновление на сайт - PullRequest
0 голосов
/ 15 ноября 2011

У меня следующая проблема:

  • Мое приложение должно информировать веб-сайт об изменениях как можно быстрее
  • Это может произойти так быстро, что предыдущий веб-запрос не был полностью обработан
  • Приложение всегда должно отправлять хотя бы последний веб-запрос (не имеет значения, если предыдущие потеряны).

Я не уверен, как это сделать оптимально. Мой текущий метод ниже, но выдает мне предупреждение ( "Неправильное использование SingleClientConnManager: соединение все еще выделено." ). Я подозреваю, что могу повторно использовать это соединение, но понятия не имею, как. Использование threadSafeConnManager не кажется решением, так как мне нужно только одно соединение (я думаю :)).

Как мне оптимизировать мой код для моих нужд?

Runnable в приведенном ниже коде находится в потоке ( webThread ), а webrequest - глобальная переменная, для которой задан определенный URL-адрес. После установки переменной запускается webThread.run () .

private Runnable mSyncInternet = new Runnable() {
    HttpClient httpClient = new DefaultHttpClient();
    HttpContext localContext = new BasicHttpContext();

    public void run() {

        HttpGet httpGet = new HttpGet(webrequest);
        try {
            HttpResponse response = httpClient.execute(httpGet, localContext);
        } catch (ClientProtocolException e) {
            sendMessageToUI(MSG_NO_INTERNET, 1);
        } catch (IOException e) {
            sendMessageToUI(MSG_NO_INTERNET, 1);
        }
    }
};

Заранее большое спасибо!

1 Ответ

0 голосов
/ 15 ноября 2011

Только сегодня я нашел блог с решением проблемы SingleClientConnManager:

public static DefaultHttpClient getThreadSafeClient() {
    DefaultHttpClient client = new DefaultHttpClient();
    ClientConnectionManager mgr = client.getConnectionManager();
    HttpParams params = client.getParams();

    client = new DefaultHttpClient(new ThreadSafeClientConnManager(params, 
            mgr.getSchemeRegistry()), params);

    return client;
}

Я попробовал его, и он отлично работал!

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