Отправить хэш-значение над мылом

1

Можно ли отправить MD5-хэш-вычисленную строку поверх SOAP?

Всякий раз, когда я делаю что-то вроде String key = md5(something) и пытаюсь отправить ключ через Java SOAP-клиент, я всегда получаю сообщение об ошибке

Сообщение: Недопустимый символ XML (Unicode: 0xsomething) был найден в содержимом элемента документа.

Я знаю, что вычисление md5 в строке, по-видимому, приводит к недопустимым символам XML. Вопрос заключается в том, чтобы знать, есть ли способ, который может пройти через все равно.

Я использую класс MessageDisgest Java для вычисления строк MD5.

С наилучшими пожеланиями.

Эдмон

  • 0
    Не видя, что именно вы делаете с Java-бинами и как конвертировать их в XML, трудно что-то посоветовать.
  • 0
    Кстати, это не о soap , а о xml вообще
Теги:
soap
hash
md5

1 ответ

2
Лучший ответ

Просто преобразуйте массив байтов MD5 в шестнадцатеричное представление строки или закодируйте его с помощью Base64. Оба преобразования приводят к простой строке, которая может быть включена в XML без (XML) кодирования.

Декодировать данные Base64 в Java

Преобразование из байтового массива в шестнадцатеричную строку в java

  • 0
    Спасибо @icza за быстрый ответ. Я попробовал 2 варианта, основанные на второй ссылке, которую вы указали , это javax.xml.bind.DatatypeConverter и org.apache.commons.codec.binary.Hex. Это очень ошеломляюще, поскольку оба они дают разные результаты. У первой буквы в нижнем регистре, а у другой буквы в верхнем регистре. Итак, горе говорит правду здесь.
  • 0
    В шестнадцатеричном представлении цифры в нижнем или верхнем регистре не имеют значения, 'a' совпадает с 'A' . Вы можете конвертировать из одной формы в другую, используя String.toLowerCase() и String.toUpperCase() .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню