existe-t-il un moyen de déterminer la taille du contenu Le contenu de la réponse est constitué d'un seul objet complexe, donc j'ai envisagé de l'écrire dans un fichier temporaire, puis de vérifier ce fichier. Ce n'est pas quelque chose que je veux faire comme un diagnostic alors que l'application est en cours de production, ce qui veut l'éviter tout le possible. P>
ps j'ai lu la réponse d'Erickson, mais cela a mentionné les flux d'entrée que je veux connaître la taille de l'objet écrit ... serait vraiment sympa si la méthode httpservletresponse code>? J'ai lu ceci Get-Taille de-http-Response-in-Java une question de> mais malheureusement où je travaille, je n'ai pas accès à Commonio: ( p>
Wrid WrdioObject () code> a renvoyé un numéro représentant des octets écrit au lieu de
void code> ... p>
4 Réponses :
Ce semble être ce que vous 'RE RECHERCHE:
DataOutputStream dos = new DataOutputStream(response.getOutputStream()); ... int len = dos.size();
Je pense que c'est votre meilleure option car je suppose que vous voulez connaître la taille de la sortie envoyée ne pas être reçue.
Mais il n'y a pas de méthode WriteObject () sur le dataOutPutStream - je devrais apporter des modifications très importantes à l'application afin de réduire tout pour les primitives.
Je reçois "java.lang.illegalstateException: getWriter () a déjà été appelé pour cette réponse"
Si vous avez accès à l'en-tête de réponse, vous pouvez lire la longueur de contenu Voici un exemple d'en-tête de réponse: p> Vérifiez ceci: Définitions de champ d'en-tête p> p> code>.
Il apparaît que la longueur de contenu de la réponse ne doit pas être réglée. Dans mon code client, j'ai essayé UrlConnection.getContenTlength () et je continue à obtenir -1. Alors, que dois-je faire du côté serveur pour que la longueur de contenu de la réponse est calculée? Mais si je pouvais le faire sur le côté serveur, mon problème serait résolu :)
Vous pouvez l'inclure dans l'en-tête de réponse de votre serveur juste avant d'envoyer la réponse au client.
Remarque: Ceci n'est pas présent si codage de transfert: chunked code>.
J'ai finalement trouvé un moyen d'obtenir ce que je voulais: Cela m'a permis de voir la taille de la réponse sur le client. J'aimerais toujours savoir ce qu'il est sur le côté du serveur avant d'être envoyé, mais c'était la prochaine meilleure chose. P> p>
Parce que je sois voté à ma propre réponse à ma propre question pour une réponse qui fait exactement ce que je veux ...
Assumer l'utilisation de et puis vous pouvez envoyer le Contenu avec P> ObjectOutputStream code>, construire autour d'un
java.io.bytearrayOutputStream code>:
contentBytes.writeTo(connection.getOutputStream());