Поэтому, посмотрев на аналогичную SO Post о String и DataHandlers, я столкнулся с проблемой с точки зрения эффективности. У меня есть строка, входящая в мою веб-службу, которая уже закодирована. Мне нужно преобразовать эту строку в DataHandler
чтобы вставить POJO и отправить другую службу. Когда я использую new ByteArrayDataSource(String, type)
он кодирует уже закодированную строку (второй раз).
Чтобы обойти это, я декодирую вход, а затем передаю созданный byte[]
в new ByteArrayDataSource(byte[], type)
. Я беспокоюсь о том, что производительность будет создаваться при декодировании и повторном кодировании изображений, когда я уже передал кодированную версию. Есть ли способ создать DataHandler
(или DataSource
) из уже закодированной строки без необходимости "тип MIME", поэтому мне не нужно декодировать для кодирования?
Я попытался использовать FileDataSource(String)
но это не работает, с тем же входом, используемым в рабочем ByteArrayDataSource(byte[], String)
с декодированными строками. Я также попробовал его передать пустую строку для типа, используя ByteArrayDataSource(String, type)
.
После немного большего поиска я наткнулся на библиотеку Apache, которая делает это, но я не уверен, насколько эффективнее это будет. Apache Axis2 имеет класс ConverterUtil, который, как представляется, имеет множество методов двоичной манипуляции для строк.
Заглянув в этот код немного больше, код для convertToDataHandler(String)
просто передает String вместе с convertToBase64Binary(String)
. Это просто создает новый источник ByteArrayDataSource из String, расшифровывая его, а затем и далее. Таким образом, утилита просто завершает работу, которую я уже делаю.