Я озадачен этим, поэтому я подумал, что если кто-нибудь из вас сталкивался с этим, так как разработка HttpClient - это немного искусства.
Проблема, с которой я сталкиваюсь, заключается в следующем: приложение использует библиотеку Java Apache HttpClient для связи с сервером в той же сети компании. В большинстве случаев это работает без проблем, но иногда мы видим множество исключений, вызванных неполными ответами: все они пропускают последние три символа закрывающего тега, поэтому анализатор в клиенте жалуется. Это длится от 5 до 10 минут, а затем уходит.
Я не смог повторить эту проблему локально, и я убедился, что ответ полностью написан сервером. Клиент получает содержимое ответа с помощью метода getResponseBodyAsStream () PostMethod, но он вызывается только один раз. Может быть, он должен циклически вызывать этот метод, пока он не станет нулевым для того редкого случая, когда ответ буферизуется?
Буду признателен за любой вклад.
Редактировать: сервер пишет заголовок длины содержимого и корректно сбрасывается, а на клиенте данные считываются в строку с:
//method is a PostMethod, client is a HttpClient
client.executeMethod(hostconfig, method);
InputStream is = method.getResponseBodyAsStream();
String response = null;
try {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf)) > 0) {
bos.write(buf, 0, len);
}
response = new String(bos.toByteArray(), "UTF-8");
} ... // closing try block