[ 
https://issues.apache.org/jira/browse/AXIS2-4060?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12909072#action_12909072
 ] 

Mark Kinsella commented on AXIS2-4060:
--------------------------------------

I was able to reproduce (read: I struggled with) this error, so I tested it 
with a quick-and-dirty PHP page to view what (if any) credentials were being 
passed. None were.

So, I looked into the source a bit to see what I could find.

I'm a little rusty on how java.net.URL is intended to work these days, but it 
seemed that the root of this issue lies in the wsdl4j-1.6.2 library, used by 
axis2, as it doesn't appear to subclass the Authenticator class anywhere. 
Specifically, the class com.ibm.wsdl.util.StringUtils and its method 
getContentAsInputStream(URL url) doesn't seem to be sending any authentication 
when it calls url.openStream()

I added an inner class within that class, and added one line to the 
getContentAsInputStream and was able to get access to the WSDL file using my 
credentials.
......
Here's my inner class...
.....

static class WSDLAuthenticator extends Authenticator {
 
        public PasswordAuthentication getPasswordAuthentication() {
            String[] userInfoParts = uri.getUserInfo().split(":");
            return (new PasswordAuthentication(userInfoParts[0], 
userInfoParts[1].toCharArray()));
        }
    }
......
and I added this line after the if (url == null) block, to point the URL object 
to the Authenticator
......
  Authenticator.setDefault(new WSDLAuthenticator());
.......

Not sure what the protocol is for suggesting patches to the wsdl4j project , 
but I suppose I'll cross my fingers that good karma will come my way if I try.
I believe the wsdl4j code is CPL'd.

Anyway, thought I'd post this in case anyone finds it useful, or wishes to 
critique my approach.





> wsdl2java is unable to retrieve a WSDL when basic authentication is required
> ----------------------------------------------------------------------------
>
>                 Key: AXIS2-4060
>                 URL: https://issues.apache.org/jira/browse/AXIS2-4060
>             Project: Axis2
>          Issue Type: Bug
>    Affects Versions: 1.4.1, 1.4
>            Reporter: Jorge Medina
>            Assignee: Dimuthu Leelarathne
>
> When access to the WSDL requires basic authentication, wsdl2java fails to 
> send the credentials in version 1.4.1
> while version 1.3 works fine.
> Using version 1.4.1: 
>    > wsdl2java -uri 
> http://ssmith:[email protected]:8080/webservices/mywsdl.wsdl -s -uw 
> -u
> you will  get HTTP error 401 as shown below, while the same command works 
> fine when using version 1.3.
>  ------ ---- --- --- --- --- --- --- 
> Retrieving document at 
> 'http://ssmith:[email protected]:8080/company-webservices/mywsdl.wsdl'.
> Exception in thread "main" 
> org.apache.axis2.wsdl.codegen.CodeGenerationException
> : Error parsing WSDL
>         at 
> org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
> ionEngine.java:156)
>         at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35)
>         at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24)
> Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=OTHER_ERROR: 
> Unabl
> e to resolve imported document at 'http://ssmith:[email protected]:8
> 080/webservices/mywsdl.wsdl'.: java.io.IOException: Server retu
> rned HTTP response code: 401 for URL: 
> http://ssmith:[email protected]
> m:8080/webservices/mywsdl.wsdl
>         at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
>         at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
>         at 
> org.apache.axis2.wsdl.codegen.CodeGenerationEngine.readInTheWSDLFile(
> CodeGenerationEngine.java:288)
>         at 
> org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat
> ionEngine.java:111)
>         ... 2 more
> Caused by: java.io.IOException: Server returned HTTP response code: 401 for 
> URL:
>  http://ssmith:[email protected]:8080/webservices/mailingCru
> dWsdl.wsdl
>         at 
> sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon
> nection.java:1241)
>         at java.net.URL.openStream(URL.java:1009)
>         at com.ibm.wsdl.util.StringUtils.getContentAsInputStream(Unknown 
> Source)
>  
>         ... 6 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to