Warum bekomme ich InvalidProtocolBufferException beim erstellen einer Nachricht.Generator aus byte-array, aber nicht einen InputStream?
Arbeite ich an ein Servlet und versuchen, sich den Anforderungen. Der entscheidende Teil des Codes den Fehler verursacht, ist die folgende:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
StringWriter writer = new StringWriter();
IOUtils.copy(request.getInputStream(), writer);
Message.Builder builder = something of type com.google.protobuf.GeneratedMessage.Builder;
builder.mergeFrom(writer.toString().getBytes());
}
Die Letzte Zeile des obigen code-Ergebnisse in der folgenden Ausnahme:
com.google.protobuf.InvalidProtocolBufferException: Protocol message tag had invalid wire type.
Jedoch, wenn der code eingeschaltet ist:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
Message.Builder builder = something of type com.google.protobuf.GeneratedMessage.Builder;
builder.mergeFrom(request.getInputStream());
}
Gibt es keine Fehlermeldung und alles funktioniert einwandfrei. Was könnte das problem sein? Ich glaube, ich brauche etwas ähnlich wie der erste code-snippet, da ich den input stream ein zweites mal (einmal schreiben es in eine Datei, und einmal, um den Prozess der tatsächlichen Anfrage).
Wie sieht Ihr
data
Holen Sie gebaut?InformationsquelleAutor jonderry | 2011-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über dieses?
Vielleicht, möchten Sie vielleicht werfen Sie einen Blick auf
RepeatableInputStream
auf jarfinder.com/index.php/java/info/... . Auf diese Weise können Sie wickeln Sie IhreinputStream
mitRepeatableInputStream
so dass Sie können es verwenden, mehrmals.InformationsquelleAutor limc
Anscheinend, ich brauchte, um kodierte input-und output-streams so, dass die Daten korrekt gelesen werden. Siehe meine Antwort zu meiner anderen Frage.
InformationsquelleAutor jonderry