wsimport со специальным символом и Xauthfile
Я сталкиваюсь с той же проблемой, что и этот парень:
Поскольку он не дал обратной связи, а я здесь новичок и не могу спросить его, решил ли он свою проблему, я открываю новый вопрос.
Я использую Ubuntu и у меня установлен JDK7 из Java оракула.
Я использую сторонний веб-сервис. Пароль (...GT@#ED...) для веб-службы имеет символ, который конфликтует с синтаксисом de -Xauthfile (http[s]://user:password@host:port//) из-за "@". Точки (...) представляют остальную часть моего пароля.
Вот команда, которую я запускаю:
wsimport -p loa -Xauthfile "path_to_auth.txt" https://myWS?wsdl
В моем файле auth.txt у меня есть:
https://user:...GT@#ED...@myWS?wsdl
Взамен получить
parsing WSDL...
[ERROR] Server returned HTTP response code: 401 for URL: https://myWS?wsdl,
"https://myWS?wsdl" needs authorization, please provide authorization file with
read access at /home/user_name/.metro/auth or use -Xauthfile to give the
authorization file and on each line provide authorization information using this
format : http[s]://user:password@host:port//<url-path>
Я ищу по всей сети, но безуспешно.
Когда я пытаюсь импортировать WS с помощью SoapUI, как в этом уроке, я получил
[ERROR] sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid
certification path to requested target
и я не знаю, где указать файл ssl для SoapUI. Я попробовал в
настройки -> Настройки SSL
но не повезло.
Вот и все. Я буду признателен за любую помощь.
РЕДАКТИРОВАТЬ
Итак, я прошёл авторизацию, изменив символы с помощью ссылки на кодировку HTML, но теперь я получаю следующую ошибку
[ERROR] Server redirected too many times (20), "https://ws?wsdl" needs
authorization, please provide authorization file with read access at /home/user
/.metro/auth or use -Xauthfile to give the authorization file and on each line
provide authorization information using this format :
http[s]://user:password@host:port//<url-path>
1 ответ
Я использую Apache axis2 вместо wsimport. Сначала эта проблема возникла у меня, и я написал сценарий bash, и он сработал.
#!/bin/bash
/axis2-1.7.9/bin/wsdl2java.sh -uri http://username:password@domain/x?wsdl
Я также использую кодировку пароля и имени пользователя с помощью 'кодировки URL', например, ниже:
@#%g3E99! -(Кодировка URL)-> %40%23%25g3E99%21
Сначала создайте файл auth.txt, в который необходимо поместить следующее и сохраните его на диске C:
http://username:password@localhost:port/wsdlurl
Теперь запустите следующую команду:
wsimport -Xauthfile C:\auth.txt -keep http://example.com/test?wsdl
Это сработало для меня.