Закрытие HttpClient версии 4.0.3 - PullRequest
0 голосов
/ 28 мая 2018

У меня есть расширение для коммерческого приложения, которое связано с версией 4.0.3 httpclient.Если я пытаюсь использовать более поздние версии, расширение не работает.Если я использую версию 4.0.3 в моем коде, это так.Я хочу закрыть HttpClient, но не могу найти механизм для этого.

Мой верхний класс - SwingWorker, который расширяется различными подклассами в зависимости от URL-адреса, к которому осуществляется доступ.

public class GetPrices extends SwingWorker<List<StockPrice>,Integer> {
private HttpClient client = new DefaultHttpClient();
List<StockPrice> lstStock;
MRBDebug objDebug = MRBDebug.getInstance();
public GetPrices (final List<StockPrice> lstStockp) {
    lstStock = lstStockp;
}  
@Override
protected List<StockPrice> doInBackground() throws Exception {
    int iValue = lstStock.size();
    int iProgress = 0;
    int iPrevious = 0;
    for (StockPrice spLine : lstStock) {
        try { 
            GetPrices.failIfInterrupted();
            getData(client, spLine);
            iProgress++;
        }
        catch (IOException a) {
            iProgress++;
        }
        catch (InterruptedException a) {
            iProgress++;            
        }
        int iTemp =iProgress * 100 / iValue;
        setProgress( iTemp);
    }
    return lstStock;
}

// Can safely update the GUI from this method.
@Override
protected void done() {

    List<StockPrice> spListp;
    try {
        // Retrieve the return value of doInBackground.
        lstStock = get();
        setProgress(100);
    } catch (InterruptedException e) {
        // This is thrown if the thread's interrupted.
    } catch (ExecutionException e) {
        // This is thrown if we throw an exception
        // from doInBackground.
    }
}

Один из подклассов:

public class GetYahooPrices extends GetPrices{
private MRBDebug objDebug; 
public GetYahooPrices (List<StockPrice> lstStock) {
    super(lstStock);
}
@Override
public void getData(HttpClient client, StockPrice spPrice) throws IOException {
    objDebug = MRBDebug.getInstance();
    String strStock = spPrice.getTicker();
    try {
        URI uri = new URL("https://finance.yahoo.com/quote/" + strStock + "?p=" + strStock).toURI();
        HttpGet httpGet = new HttpGet(uri);
        HttpResponse httpResponse = client.execute(httpGet);
        HttpEntity entity = httpResponse.getEntity();
        InputStream stream = entity.getContent();

Я хочу закрыть HttpCLient после завершения всех обращений к URL, но не могу найти ничего, что делает это с версией 4.0.3.Кто-нибудь может указать мне правильное направление?

1 Ответ

0 голосов
/ 28 мая 2018

Просто позвоните client.getConnectionManager().shutdown();, если вы хотите немедленно закрыть все соединения в 4.0.3.Обратите внимание, что вам следует использовать обновленную версию Apache HttpClient 4.5.5, поскольку используемой версии исполнилось 8 лет.

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