2010-08-27 17 views
1

Je tente d'appeler un service Web, qui a une authentification HTTP de base. J'ai généré le code client en utilisant l'outil WSDL2JAVA d'AXIS.Authentification de base HTTP pour l'appel WEBService

Mais je ne suis pas en mesure de définir le nom d'utilisateur et le mot de passe pour l'appel de service Web.

J'ai essayé de les avoir dans l'URL de point final comme

http://username:[email protected]/wsdl

mais je reçois l'erreur non autorisée pour cela. J'essaie de trouver un moyen d'obtenir cet ensemble à mon appel dans le code Java ....

Note: Je suis capable d'invoquer le même service via le soapUI et obtenir les résultats. J'ai fourni le nom d'utilisateur et mot de passe dans l'onglet "Aut" sur la demande.

Voici quelques-uns des extraits de code de mon Stub, si cela est Userful pour vous

 _serviceClient = new org.apache.axis2.client.ServiceClient(configurationContext,_service); 


    _serviceClient.getOptions().setTo(new org.apache.axis2.addressing.EndpointReference(
      targetEndpoint)); 
    _serviceClient.getOptions().setUseSeparateListener(useSeparateListener); 

     //adding SOAP soap_headers 
    _serviceClient.addHeadersToEnvelope(env); 
    // set the message context with that soap envelope 
    _messageContext.setEnvelope(env); 

    // add the message contxt to the operation client 
    _operationClient.addMessageContext(_messageContext); 

    //execute the operation client 
    _operationClient.execute(true); 

Toutes les entrées seront grandement appréciés !!

Répondre

5
HttpTransportProperties.Authenticator 
         auth = new HttpTransportProperties.Authenticator(); 
      auth.setUsername("username"); 
      auth.setPassword("password"); 

_serviceClient.getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.BASIC_AUTHENTICATE,auth); 
+2

Merci! Cela a fonctionné. J'ai trouvé seulement ceci si _serviceClient.getOptions(). SetProperty (org.apache.axis2.transport.http.HTTPConstants.AUTHENTICATE, auth); –

+0

Est-ce que quelqu'un sait pourquoi les informations d'identification ne peuvent pas être placées dans l'URL du point de terminaison comme indiqué dans la question? Vous pouvez le faire avec Apache HttpClient et je suppose que Axis utilise cela dans les coulisses ... – Kaitsu