Я не ожидал бы огромного ответа на такой неопределенный вопрос. Почему бы не написать пару модульных тестов, чтобы попробовать свой код?
В любом случае, из-за моего опыта работы с HttpClient меня выделяет то, что если вы подвергаетесь большой нагрузке (большое количество одновременных потоков), ваш код кажется небезопасным - кажется, что нет верхней границы для числа одновременные соединения, которые могут быть созданы.
Если вы считаете, что это может иметь значение в вашем случае, вы можете попробовать что-то вроде этого:
class X {
private static final HttpClient httpClient;
static {
SchemeRegistry defaultRegistery = new DefaultHttpClient().getConnectionManager()
.getSchemeRegistry();
ThreadSafeClientConnManager connMgr = new ThreadSafeClientConnManager(defaultRegistery);
connMgr.setMaxTotalConnections(10);
connMgr.setDefaultMaxPerRoute(10);
httpClient = new DefaultHttpClient(connMgr);
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 30000);
}
public static InputStream simpleGetRequest(URL url, List<NameValuePair> queryString) throws ClientProtocolException, IOException {...}
public static InputStream simpleGetRequest(URL url, List<NameValuePair> queryString) throws ClientProtocolException, IOException {...}
}
... и просто используйте статический httpClient в своих методах вместо того, чтобы каждый раз создавать новый.
Я скопировал и изменил это из некоторого кода, который я написал ранее, но не считаю это обязательно правильным. Модульные тесты будут вашими друзьями здесь.
РЕДАКТИРОВАТЬ: Что касается вашего комментария о смешивании URL и класса библиотеки HttpClient NameValuePair (это вас беспокоит?), Почему бы не просто Map в сигнатурах метода?