wsimport со специальным символом и Xauthfile

Я сталкиваюсь с той же проблемой, что и этот парень:

ошибка 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 

Это сработало для меня.

Другие вопросы по тегам