установить другое время ожидания сокета для того же httpclient с помощью MultiThreadedHttpConnectionManager - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть два потока, использующих один и тот же экземпляр HTTPClientTest.два потока вызывают метод send для одного и того же HTTPClientTest.Как я должен установить разные тайм-аут сокета для каждого из тех потоков, которые вызывают метод отправки.если я сделаю что-то подобное в методе отправки, то оба потока, выполняющие метод отправки, будут иметь одинаковое время ожидания сокета.другой тайм-аут сокета для нескольких потоков, выполняющих метод send для одного и того же экземпляра HTTPClientTest.

public class HTTPClientTest implements Runnable{
private HttpClient httpClient;
private MultiThreadedHttpConnectionManager connectionManager;
private HttpConnectionManagerParams managerParams;
private HttpClientTest()
{
     connectionManager = new MultiThreadedHttpConnectionManager();
     httpClient = new HttpClient(connectionManager);
}
public static synchronized HTTPClientTest getInstance()
{
    if(instance == null)
        instance = new HTTPClientTest();
    return instance;
}

public void send(String message, String url)
{
    PostMethod post = new PostMethod(url);
    String reply = "";
    String length = message.length() + "";
    post.setRequestHeader("Content-Length", length);
    try 
    {
        System.out.println("HTTP request: " + message);
        StringRequestEntity postBody = new StringRequestEntity(message, "text/xml", "UTF-8");
        post.setRequestEntity(postBody);
        int status = httpClient.executeMethod(post);
        System.out.println("HTTP status: " + status);
        reply = post.getResponseBodyAsString();
        System.out.println("HTTP Post response code: " + reply);

    } 
    catch(HttpException e)
    {
        e.printStackTrace();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        post.releaseConnection();
    }

}
}

1 Ответ

1 голос
/ 02 марта 2012

Это просто:

get.getParams().setParameter("http.socket.timeout",20000);
httpclient.execute(get);

Мотоды не разделяются потоками, не так ли? Изменить как то, что вам нужно.

...