У меня есть строка, кодированная base64. Это выглядит следующим образом:Base64: массив входных байтов имеет неправильный конечный байт при 40
eyJibGExIjoiYmxhMSIsImJsYTIiOiJibGEyIn0=
Любой онлайн инструмент может расшифровать это соответствующую строку, которая {"bla1":"bla1","bla2":"bla2"}
. Тем не менее, моя реализация Java не удается:
import java.util.Base64;
System.out.println("payload = " + payload);
String json = new String(Base64.getDecoder().decode(payload));
Я получаю следующее сообщение об ошибке:
payload = eyJibGExIjoiYmxhMSIsImJsYTIiOiJibGEyIn0=
java.lang.IllegalArgumentException: Input byte array has incorrect ending byte at 40
Что случилось с моим кодом?
[Невозможно воспроизвести] (http://ideone.com/z07TWN), дополнительный символ в конце строки поднимет это точное исключение ... –
Но откуда вы получаете кодированную строку? как вы передаете его переменной полезности ?, потому что, как вы говорите, она работает ... Я только что протестировал ее с помощью Java 8 и никаких проблем. –