Hello,

I have been unable to successfully execute my WSDL-generated Axis2 1.4
client against a web service that uses HTTPS and basic authentication. 

After some extensive search on the Internet, I found some suggestions which
I have tried to implement. I've managed to successfully do a HTTP get
against the service's WSDL-file using plain HTTPClient, but when I try to
implement what should basically be the same parameters on the service stub,
I receive a "Transport error: 401 Error: Unauthorized" error message.

I've included the source code for the successful HTTPClient code and the
not-so-successfull service stub:

            ProtocolSocketFactory protocolSocketFactory = new
EasySSLProtocolSocketFactory();
            //ProtocolSocketFactory protocolSocketFactory = new
SSLProtocolSocketFactory();
            Protocol https = new Protocol("https", protocolSocketFactory,
443);

            HttpState state = new HttpState();
            state.setCredentials(new AuthScope(host, 443), new
UsernamePasswordCredentials(userName, password));

            HttpClient httpclient = new HttpClient();
            httpclient.setState(state);

            httpclient.getHostConfiguration().setHost(host, 443, https);
            GetMethod httpget = new GetMethod(wsdlPath);
            try {
              httpclient.executeMethod(httpget);
              System.out.println(httpget.getStatusLine());
            } finally {
              httpget.releaseConnection();
            }

            HttpTransportProperties.Authenticator auth = new
HttpTransportProperties.Authenticator();
            auth.setPassword(userName);
            auth.setUsername(password);
            auth.setHost(host);
            auth.setPort(443);

            SmsServiceStub service = new SmsServiceStub(endPoint);
            Options options = service._getServiceClient().getOptions();
            options.setProperty(HTTPConstants.AUTHENTICATE, auth);
            options.setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER,
https);
            options.setTimeOutInMilliSeconds(60 * 1000); //1 minute

            SmsServiceStub.SubmitRsp resp = service.Submit(req);

And the log:

Running com.telenor.nwnsms.SmsServiceTest
03.jul.2008 16:11:29
org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: basic authentication scheme selected
HTTP/1.1 200 OK
03.jul.2008 16:11:30 org.apache.axis2.deployment.ModuleDeployer deploy
INFO: Deploying module: addressing-1.4
03.jul.2008 16:11:31
org.apache.commons.httpclient.auth.AuthChallengeProcessor selectAuthScheme
INFO: basic authentication scheme selected
03.jul.2008 16:11:31 org.apache.commons.httpclient.HttpMethodDirector
processWWWAuthChallenge
INFO: Failure authenticating with BASIC ''@<removed>:443
03.jul.2008 16:11:31 org.apache.axis2.transport.http.HTTPSender sendViaPost
INFO: Unable to sendViaPost to url[https://<removed>]
org.apache.axis2.AxisFault: Transport error: 401 Error: Unauthorized
        at
org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:298)
        at
org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:192)
        at
org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:77)
        at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:327)
        at
org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:206)
        at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:396)
        at
org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:374)
        at
org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
        at
org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
        at
com.telenor.mr2.channel.nwn.SmsServiceStub.Submit(SmsServiceStub.java:207)
        at com.telenor.nwnsms.SmsServiceTest.testApp(SmsServiceTest.java:95)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at junit.framework.TestCase.runTest(TestCase.java:154)
        at junit.framework.TestCase.runBare(TestCase.java:127)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
        at junit.framework.TestSuite.runTest(TestSuite.java:208)
        at junit.framework.TestSuite.run(TestSuite.java:203)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
        at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
        at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
        at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
        at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)

Thanks in advance!
Kenneth
-- 
View this message in context: 
http://www.nabble.com/Axis2-SOAP-client-and-HTTPS-based-server-using-basic-authentication-tp18260167p18260167.html
Sent from the Axis - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to