Je veux jeter quelques demandes (de type Jusqu'à présent, j'essaie de sortir des données du flux d'entrée associé à la demande et d'enregistrer ces données binaires dans un fichier. En fin de compte, cela peut nécessiter quelque chose comme le stockage d'un octet-compter avant chaque flux d'entrée sauvegardé, de sorte que je sache où une requête se termine et l'autre commence. P>
Y a-t-il un moyen plus simple de le faire? P>
** Edit: Pour clarifier, ce ne sont pas des demandes impliquant un navigateur. Jusqu'à présent, aucune des réponses ne résout mon problème particulier, ce que je suppose résoudre à la sérialisation et à la désérialisation d'un httpServletQuest. J'ai essayé juste de tirer les octets du flux d'entrée renvoyé par demande.getInputStream (). Malheureusement, si je le transforme en une chaîne, il semble que les octets résultants ne puissent pas être analysés par Message.Builder.mergefrom (octets). P>
Je pose une prime pour quiconque sait comment résoudre mon problème. P> javax.servlet.http.httpservlet.http.httpservletQuest code>) dans un fichier puis de les rejouer ultérieurement du fichier, de sorte que je puisse tester des modifications futures sur le
HttpServlet code>. Quelle est la meilleure façon d'accomplir cela? P>
3 Réponses :
Vous devriez peut-être consulter Selenium ( http://seleniumhq.org/ ). p>
Je dis cela parce que je suppose que la raison pour laquelle vous souhaitez lire les demandes est à des fins de test. Selenium enregistre ce que vous faites dans votre navigateur et peut ensuite le lire. P>
Si vous essayez d'accomplir autre chose, vous pourriez peut-être expliquer ce que vous essayez finalement de faire. P>
En fait, le sélénium teste quelque chose d'autre que la base HTTPQUESTS / RESOLES, il teste des sites Web. Les demandes HTTP sont également utilisées dans, par exemple, Webservices, dans lesquelles le sélénium ne serait pas optimal (IMHO). Comme le dit Modifier, ce n'est pas dans un contexte de navigateur Web, et il y a un bon changement Hacks serait nécessaire dans le code si elle devait être rendue adaptée aux tests de navigateur.
Il existe de nombreux outils de proxy inversé locaux qui peuvent "enregistrer-la lecture" une session HTTP. En règle générale, vous configurez votre navigateur pour utiliser un serveur proxy localhost, effectuer les actions, enregistrer la session, puis le rejeter. JMeter et Charles sont deux outils qui sont basés sur Java. P>
Une autre option serait d'utiliser httpClient pour exercer par programme votre servlet. Utiliser Junit pour exécuter les tests a un avantage en ce qu'il est plus facile de vérifier que vous obtenez la réponse «correcte». P>
Dans mon cas particulier, j'ai finalement résolu le problème en utilisant un codedOutputStretream code> pour écrire le
com.google.protobuf.gogradedmessage code> (
foo code> Ci-dessous):
byte[] ba = readBytesFromOutputFile();
CodedInputStream cis = CodedInputStream.newInstance(ba);