Frage

Ich benutze javax.mail.internet.MimeBody * Version 1.4.1

Mein Programm möchte einige Binärdaten mit mehreren Niveau des Verschachtelungsniveaus von einem Server an den Client mit Mimemultipart senden. Ich habe festgestellt, dass, wenn wir auf einem Niveau, wenn wir GetContent verwenden, die Daten vergeben. Ich konnte dieses Problem mit diesem Snippet reproduzieren

generasacodicetagpre.

Hier ist der Ausgang

generasacodicetagpre.

Ich habe den Code hier vollständig vereinfacht, und es sieht offensichtlich aus, dass er (RAW) InputStream verwendet werden soll, aber wir haben verschachteltMultipart, und die oberste Ebene hatte GetContent, der dazu führte, dass es für einige Fälle versagt hat.

    .
  1. Input ist vom Typ Byte Array, aber auf dem Client antwortet GetContent mit der Zeichenfolge. Der Server setzt den Inhalt auf Anwendungs- / Oktettstrom, aber auf der Clientseite wird sie als Zeichenfolge ausgegeben. Was ist hier schief?
  2. Ich bin nicht sicher, warum das Byte C2 vor 8C hinzugefügt wird. Was ist das Besondere an dem 8C-Charakter?
  3. Was ist der Unterschied zwischen getinputstream und getrawinputstream. Wann eine über den anderen verwenden?
War es hilfreich?

Lösung

Was enthält der vollständige Strom, dass der Server erstellt und der Client liest?

Beachten Sie, dass Sie mithilfe von Mimemultipart ohne MimeMessage einige der Dinge fehlen, die von MimeMessage automatisch für Sie erfolgen, insbesondere werden Sie den Anruf an mimemultipart.updateHeader () fehlen.Da das Verfahren geschützt ist, müssen Sie Mimemultipart unterklappen und diese Methode anrufen, bevor Sie Writeto anrufen.Wenn das Ihr Problem nicht behoben, zeigen Sie uns die genauen Daten, die in den Bach geschrieben und gelesen werden.

Wenn Sie oben erwähnt, möchten Sie, wenn Sie mit binären Daten erwarten, können Sie Getinputstream fast sicher verwenden.Der GetrawinputStream bietet Ihnen die Daten, bevor es decodiert wurde, z. B. der Basis64-Eingang anstelle des binären Ausgangs.

Andere Tipps

Verwenden Sie nicht GetContent (), wenn er eine Zeichenfolge zurückgibt, und Sie möchten Binärdatei.String ist kein Container für binäre Daten.Verwenden Sie getinputstream () und kopiere die Bytes.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top