Я провел несколько временных тестов, потому что время имеет значение, всегда.
Я пытался получить ответ в строку 3 разными способами. (показано ниже)
Я упустил блоки try / catch для удобства чтения.
Чтобы дать контекст, это предыдущий код для всех 3 подходов:
String response;
String url = "www.blah.com/path?key=value";
GetMethod method = new GetMethod(url);
int status = client.executeMethod(method);
1)
response = method.getResponseBodyAsString();
2)
InputStream resp = method.getResponseBodyAsStream();
InputStreamReader is=new InputStreamReader(resp);
BufferedReader br=new BufferedReader(is);
String read = null;
StringBuffer sb = new StringBuffer();
while((read = br.readLine()) != null) {
sb.append(read);
}
response = sb.toString();
3)
InputStream iStream = method.getResponseBodyAsStream();
StringWriter writer = new StringWriter();
IOUtils.copy(iStream, writer, "UTF-8");
response = writer.toString();
Итак, после запуска 500 тестов для каждого подхода с одинаковыми данными запроса / ответа, вот цифры. Еще раз, это мои выводы, и ваши выводы могут не совпадать, но я написал это, чтобы показать другим различия в эффективности этих подходов.
Звания:
Подход № 1
Подход № 3 - на 2,6% медленнее, чем № 1
Подход № 2 - на 4,3% медленнее, чем # 1
Любой из этих подходов является подходящим решением для получения ответа и создания из него строки.