Je suis perplexe à ce sujet, alors j'ai pensé que je demanderais au cas où vous l'auriez rencontré, puisque le développement HttpClient est un peu un art. Le problème auquel je suis confronté est le suivant: Une application utilise la bibliothèque Apache HttpClient Java pour communiquer avec un serveur dans le même réseau d'entreprise. La plupart du temps, cela fonctionne sans problème, mais à l'occasion nous verrons un barrage d'exceptions causé par des réponses incomplètes: les trois derniers caractères de la balise fermante leur manquent, de sorte que l'analyseur du client se plaint. Cela dure peut-être 5 à 10 minutes, puis s'en va.Réponse intermittente incomplète à l'aide d'Apache HttpClient 3.0.1
Je n'ai pas été en mesure de répliquer ce problème localement, et j'ai vérifié que la réponse est écrite complètement par le serveur. Le client obtient le contenu de la réponse avec la méthode getResponseBodyAsStream() de PostMethod, mais il n'est appelé qu'une seule fois. Peut-être qu'il a besoin de boucler l'appel de cette méthode jusqu'à ce qu'il obtienne null pour l'occasion rare où la réponse est mise en mémoire tampon?
J'apprécierai n'importe quelle entrée.
Edit: Le serveur est en train d'écrire l'en-tête de longueur du contenu et de rinçage correctement, et au niveau du client, les données sont lues dans une chaîne avec:
//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
Edit: Comme avec de nombreux bugs difficiles à trouver, le problème semble être lié à des caractères spéciaux (caractères accentués européens, long-s allemand et ainsi de suite). Une fois les messages normalisés pour supprimer ces caractères, les erreurs se sont arrêtées. – Munir
Avoir un problème similaire. Exact même URL. En utilisant le navigateur/Curl donnez-moi les données complètes. Mais, Httpclient obtient une sortie incomplète ...! – thinkanotherone