Как использовать ThreadSafeClientConnManager.requestConnection (маршрут HttpRoute, состояние объекта) - PullRequest
3 голосов
/ 11 сентября 2010

С ThreadSafeClientConnManager.requestConnection (маршрут HttpRoute, состояние объекта), каким должно быть «состояние» второго элемента?

В конечном итоге я пытаюсь подключить ThreadSafeClientConnManager.releaseConnection (ManagedClientConnection conn, long validituration, Time validation,timeUnit) освободить соединение.Но мне нужен ManagedClientConnection, который доступен только из метода requestConnection (через возвращенный ClientConnectionRequest)

Ответы [ 2 ]

2 голосов
/ 07 января 2013

Похоже, вы должны быть в состоянии безопасно передать ноль для параметра состояния.

DefaultRequestDirector вызывает requestConnection примерно так ...

Object userToken = context.getAttribute(ClientContext.USER_TOKEN);

// Allocate connection if needed
if (managedConn == null) {
    ClientConnectionRequest connRequest = connManager.requestConnection(route, userToken);

Далее по цепочке, если контекст равен нулю (как это происходит при вызове client.execute (httpRequest)), контекст заменяется контекстом по умолчанию, который не содержит USER_TOKEN, поэтому requestConnection вызывается с нулем для параметр состояния.

1 голос
/ 14 сентября 2010

Я нашел довольно приличный пример использования этого класса (см. Ссылку внизу).Оказывается, releaseConnection() не требуется, если вы делаете entity.consumeContent() в ответе.Также не забудьте передать BasicHttpContext в httpclient.execute.

Аналогично этому:

this.context = new BasicHttpContext();

httpclient.execute(httppost,context);
String entityStr = EntityUtils.toString(response.getEntity());
response.getEntity().consumeContent();

http://svn.apache.org/repos/asf/httpcomponents/httpclient/branches/4.0.x/httpclient/src/examples/org/apache/http/examples/client/ClientMultiThreadedExecution.java

До сих пор не знаю, что такое "состояние" внутри requestConnection: ThreadSafeClientConnManager.requestConnection(HttpRoute route, Object state)

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