Tworzę nowy HttpClient, przekazując ThreadSafeClientConnManager i HttpParams w jego konstruktorze, ale zawsze generuje zły błąd żądania. Aby dowiedzieć się, co poszło nie tak, debugowałem to, ale wszystko na próżno. Podać mi jakieś rozwiązanie Oto mój blok koduUstaw obiekt HttpParams w HttpClient 4.0
sc.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
sc.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
HttpParams basicParams = new BasicHttpParams();
ThreadSafeClientConnManager connmgr = new ThreadSafeClientConnManager(basicParams, sc);
ConnManagerParams.setMaxConnectionsPerRoute(
basicParams,
// if we have more than 5 concurrent leads, good problem to have
new ConnPerRoute() {
public int getMaxForRoute(HttpRoute httproute) {
return 5;
}
});
g_client = new DefaultHttpClient(connmgr, basicParams);
// It's a lead, be forgiving with timeout
g_client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);
g_client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);
ConnManagerParams.setTimeout(basicParams, 2000);
gdy zgłoszę g_client.execute(postMethod);
w moim kodu jest ona pokazuje 400 kod stanu oznacza, że coś jest nie tak z moją prośbę. Gdybym przekazać null w moim konstruktora DefaultHttpClient
g_client = new DefaultHttpClient(connmgr, null);
Klient realizuje z powodzeniem, ale to nie jest właściwa droga jak trzeba ustawić podstawowe param maxconnectionperroute
. Miałem tu wkleić wątpliwy kod. Proszę spojrzeć i mi pomóc. Utknąłem tutaj.
Używam wersji HttpClient 4.0.
Czy jest jakiś szczególny powód, dla którego używasz takiego nieaktualnej wersji Apache HttpClient? – oleg
Tylko jeden powód, ponieważ korzystam z serwera WebSphere (nie znam dokładnej wersji), który obsługuje tylko tę wersję httpclient. –