staram się trafić do serwera za pomocą klienta HTTP przy użyciu PoolingClientConnectionManager
Ustawienie MAX połączeń dla poszczególnych hostówHttpClientError: Serwer docelowy nie odpowiedział
//Code that inilizes my connection mananger and http client
HttpParams httpParam = httpclient.getParams(); HttpConnectionParams.setSoTimeout (httpParam, SOCKET_TIMEOUT);
HttpConnectionParams.setConnectionTimeout(httpParam, CONN_TIMEOUT);
httpclient.setParams(httpParam);
//Run a thread which closes Expired connections
new ConnectionManager(connManager).start();
//Code that executes my request
HttpPost httpPost = new HttpPost(url);
HttpEntity httpEntity = new StringEntity(request, "UTF-8");
httpPost.setEntity(httpEntity);
Header acceptEncoding = new BasicHeader("Accept-Encoding", "gzip,deflate");
httpPost.setHeader(acceptEncoding);
if(contenttype != null && !contenttype.equals("")){
Header contentType = new BasicHeader("Content-Type", contenttype);
httpPost.setHeader(contentType);
}
InputStream inputStream = null;
LOG.info(dataSource + URL + url + REQUEST + request);
HttpResponse response = httpclient.execute(httpPost);
To jest, że używamy puli połączeń dla trwałości http.
Jesteśmy coraz tego błędu sporadycznie:
The target server failed to respond
org.apache.http.NoHttpResponseException: The target server failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:95)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:517)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
Czy ktoś wie jak rozwiązać ten problem?
Zamykamy również połączenia bezczynne.
Może trochę Proszę o pomoc.
http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html
Poinformuj klienta o inicjalizacji i zażądaj wykonania kodu. – vzamanillo
// Kod służący do autoryzacji mojego menedżera połączeń i klienta http HttpParams httpParam = httpclient.getParams(); \t \t HttpConnectionParams.setSoTimeout (httpParam, SOCKET_TIMEOUT); \t \t HttpConnectionParams.setConnectionTimeout (httpParam, CONN_TIMEOUT); \t httpclient.setParams (httpParam); \t// Uruchomienie wątku, który zamyka wygasłe połączenia \t new ConnectionManager (connManager).początek(); –
// Kod, który wykonuje moją prośbę \t \t HttpPost httpPost = new HttpPost (url); \t \t \t \t HttpEntity httpEntity = new StringEntity (żądanie, "UTF-8"); \t \t httpPost.setEntity (httpEntity); \t \t \t \t Nagłówek acceptEncoding = new BasicHeader ("Accept-Encoding", "gzip, deflate"); \t \t httpPost.setHeader (acceptEncoding); \t \t \t \t \t \t if (contentType = null && contenttype.equals ("") { \t \t \t Header contentType = new BasicHeader!) ("Content-Type", contentType); \t \t httpPost.setHeader (contentType); \t \t} \t \t \t \t InputStream inputStream = null; \t \t \t \t Odpowiedź HttpResponse = httpclient.execute (httpPost); –