2013-12-11 57 views
1

我有一個存儲在使用HTTP BasicAuth保護的位置的wsdl。 我嘗試閱讀下面提到的wsdl [1]; 但即時得到以下錯誤如何使用wsld4j讀取安全的wsdl

"faultCode=OTHER_ERROR: Unable to resolve imported document"

完整的錯誤堆棧是這裏[2]。 任何人都知道我如何使用wsdl4j從安全的地方讀取wsdl?

[1]

  WSDLReader reader = getWsdlFactoryInstance().newWSDLReader(); 
     // switch off the verbose mode 
     reader.setFeature(JAVAX_WSDL_VERBOSE_MODE, false); 
     reader.setFeature("javax.wsdl.importDocuments", false); 
     wsdlDefinition = reader.readWSDL(baseURI); 

[2]

at java.lang.Thread.run(Thread.java:662) 

Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at 'http://10.100.1.35:9763/registry/re 
source/_system/governance/apimgt/wsdls/admin--aa1.0.0.wsdl'.: java.io.IOException: Server returned HTTP response code: 401 for URL: http://10.100.1.35 
:9763/registry/resource/_system/governance/apimgt/wsdls/admin--aa1.0.0.wsdl 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2259) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2207) 

     at java.lang.Thread.run(Thread.java:662) 
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: Unable to resolve imported document at 'http://10.100.1.35:9763/registry/re 
source/_system/governance/apimgt/wsdls/admin--aa1.0.0.wsdl'.: java.io.IOException: Server returned HTTP response code: 401 for URL: http://10.100.1.35 
:9763/registry/resource/_system/governance/apimgt/wsdls/admin--aa1.0.0.wsdl 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2259) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2207) 

回答

1
String name = "admin"; 
    String password = "admin"; 

    String authString = name + ":" + password; 
    System.out.println("auth string: " + authString); 
    byte[] authEncBytes = Base64.encodeBase64(authString.getBytes()); 
    //byte[] authEncBytes= BASE64Encoder.encode(authString.getBytes(); 

    String authStringEnc = new String(authEncBytes); 
    System.out.println("Base64 encoded auth string: " + authStringEnc); 

    URL url = new URL(webPage); 
    URLConnection urlConnection = url.openConnection(); 
    urlConnection.setRequestProperty("Authorization", "Basic " + authStringEnc); 

在此之後添加代碼讀取WSDL。如果基本認證用於該wsdl,那麼它應該工作。

網頁是wsdl的網址。