2015-01-18 2 views
-1

Это мой код:SOAP UI базовая аутентификация в Java

общественного класса JavaSoapUi {

public static void main(String[] args) throws Exception { 

    String requestUrl = "myurl"; 
    URLConnection connection =new URL(requestUrl).openConnection(); 
    System.out.println("orignal url: " + connection.getURL()); 
    connection.connect(); 
    System.out.println("connected url: " + connection.getURL());  
    HttpPost httpPost = new HttpPost(requestUrl);  
    String username = "user"; 
    String password = "pass"; 
    String encoded = DatatypeConverter.printBase64Binary((username + ":" + password).getBytes("UTF-8")); 
    httpPost.addHeader("AUTHORIZATION", "Basic " + encoded); 
    HttpClient httpClient = HttpClientBuilder.create().build(); 
    HttpResponse response = httpClient.execute(httpPost);  
    System.out.println("Response" + response.getStatusLine().toString()); 
    HttpEntity entity = response.getEntity();   
    String responseString = EntityUtils.toString(entity, "UTF-8"); 
    System.out.println("ResponseString" + responseString);  
    EntityUtils.consume(entity); 

} 

И я получаю выход Ошибка: HTTP/1.1 301 Moved Постоянно

Если я использовал имя пользователя и пароль в пользовательском интерфейсе SOAP. Используя базовую проверку подлинности, я могу получить результат. Но когда я использую то же имя пользователя и пароль в коде Java, я получаю сообщение об ошибке.

Любой мне помогает.

+0

кажется, что вам не хватает заголовка Content-Type. Попробуйте добавить другой заголовок: Content-Type: application/xml – Abhi

+0

Я добавил заголовок Content-Type. Я получаю ту же ошибку. httpPost.setHeader («Content-Type», «application/xml»); –

ответ

0

Ваш Authoritzation http-header выглядит хорошо для меня, потому что вы добавили заголовок, как это определено в RFC. Кроме того, если проблема была с вашим Authoritzation, тогда ваш звонок должен получить Error HTTP 401 Unauthorized, вместо этого вы получаете Error HTTP 301 - Moved permanently, поэтому, вероятно, ошибка связана с вашим url. Проверьте locationhttp-header вашего сообщения об ошибке 301, чтобы узнать, как правильно url для вашего обслуживания.

EDIT НА ОСНОВЕ OP COMMENT

Как я сказал, что вы проверить location заголовок из 301 ответа ошибки, и кажется, что url является https://, если изменить url, теперь вы получаете Error: unable to find valid certification path to requested target это потому что ваш клиент должен доверять сертификату сервера, для этого загрузите сертификат сервера из своего url и загрузите его в хранилище доверия JRE, где вы выполняете свой клиент с помощью следующей команды (правильный способ заключается в добавлении certificate authority вашего сертификата сервера, однако для выполнения тестовой загрузки directl y сертификата сервера достаточно).

keytool -import -alias somealias -file serverCertificate.cer -keystore JRE_HOME/lib/security/cacerts

Обратите внимание, что keytool внутри дистрибутива Java в JAVA_HOME/bin/keytool и пароль по умолчанию для JRE_HOME/lib/security/cacerts доверия магазина changeit.

Надеюсь, что это поможет,

+0

Я проверил местоположение в http-заголовке. Место начинается с «https: //». Когда я использовал http в моем URL-адресе, я получил эту «Ошибка: не удалось найти допустимый путь сертификации для запрошенной цели». Я хочу получить сертификат ssl или какие-либо другие способы решения этой проблемы. –

+0

Привет @Rajeshkannan, поэтому проблема была связана с вашим «url», если ваш URL-адрес является «https: //», ваш клиент должен доверять сертификату сервера. Я уточню свой ответ. – albciff

+0

Можем ли мы получить дубликат сертификата ssl @albciff –

Смежные вопросы