2016-02-09 152 views
0

我試圖連接到一個WSDL文件,並不斷收到此錯誤:WSDL連接問題

​​

我能夠連接到本地WSDL文件沒有任何錯誤,但現在我試圖連接外部服務器上的文件。我得到了一個用戶名和密碼,但我不確定如何在通過這些參數

這裏就是我在我的登錄憑據正在進入:

 MessageFactory messageFactory = MessageFactory.newInstance(); 
    SOAPMessage soapMessage = messageFactory.createMessage();  
    String loginPassword = "myusername:mypassword"; 
    soapMessage.getMimeHeaders().addHeader("Authorization", "Basic " + loginPassword); 

在另一方面,我打印報表之後我的肥皂請求,似乎是工作和我的肥皂響應後。​​我知道,輸入用戶名和密碼是更安全的方式,但此時我只是試圖成功撥打電話。

+1

它可能是這樣的:http://security.stackexchange.com/questions/29916/why-does-http-basic-authentication-encode-the-username-and-password-with-base64 –

+0

什麼@McKevin說。您需要使用'getBytes(StandardCharsets.ISO_8859_1)'然後[base 64編碼]將您的loginPassword轉換爲字節(http://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder .html#encodeToString-byte:A-)這些字節。 – VGR

回答

0

基本認證的用戶名密碼是Base 64編碼。希望這會有所幫助。

我爲InputStream的基本身份驗證樣本: -

public static InputStream getInputStream(String location) throws IOException { 
     URL url = new URL(location); 
     URLConnection uc = url.openConnection(); 
     String username = ""; 
     String password = ""; 
     String userpass = username + ":" + password; 
     String basicAuth = "Basic " 
       + javax.xml.bind.DatatypeConverter.printBase64Binary(userpass 
         .getBytes()); 
     uc.setRequestProperty("Authorization", basicAuth); 
     return uc.getInputStream(); 
} 

另做它是由http://user:[email protected]非常不安全的方式。只能在開發人員環境中使用它。