2009-08-24 10 views
5

Sto consumando un servizio Web che inserisce un token di autenticazione nell'intestazione della busta SOAP. Appare (esaminando gli esempi forniti con WS WSL) che se lo stub è generato in .NET, queste informazioni di intestazione sono esposte attraverso una variabile membro nella classe stub. Tuttavia, quando si genera il mio stub java Axis2 usando WSDL2Java, non sembra essere esposto da nessuna parte.Axis2 SOAP Envelope Header Information

Qual è il modo corretto per estrarre queste informazioni dall'intestazione della busta SOAP?

WSDL: http://www.vbar.com/zangelo/SecurityService.wsdl

C# Esempio:


using System; 
using SignInSample.Security;   // web service 
using SignInSample.Document;   // web service 

namespace SignInSample 
{ 
    class SignInSampleClass 
    { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      // login to the Vault and set up the document service 
      SecurityService secSvc = new SecurityService(); 
      secSvc.Url = "http://localhost/AutodeskDM/Services/SecurityService.asmx"; 
      secSvc.SecurityHeaderValue = new SignInSample.Security.SecurityHeader(); 

      secSvc.SignIn("Administrator", "", "Vault"); 

      DocumentServiceWse docSvc = new DocumentServiceWse(); 
      docSvc.Url = "http://localhost/AutodeskDM/Services/DocumentService.asmx"; 
      docSvc.SecurityHeaderValue = new SignInSample.Document.SecurityHeader(); 
      docSvc.SecurityHeaderValue.Ticket = secSvc.SecurityHeaderValue.Ticket; 
      docSvc.SecurityHeaderValue.UserId = secSvc.SecurityHeaderValue.UserId; 
     } 
    } 
} 

Il campione illustra quello che mi piacerebbe fare. Si noti come l'istanza secSvc disponga di una variabile membro SecurityHeaderValue popolata dopo una chiamata di successo secSvc.SignIn().

Ecco alcuni documentazione API utili per quanto riguarda il metodo SignIn:

Anche se non v'è alcun valore di ritorno, un segno di successo nel popoleranno la SecurityHeaderValue del servizio di sicurezza. Le informazioni di SecurityHeaderValue vengono quindi utilizzate per altre chiamate al servizio web.
+0

può fare un esempio, inviare il WSDL, nulla di concreto? – skaffman

+0

Ho lo stesso problema – LiorH

risposta

1

Credo che la chiamata che stai cercando è:

MessageContext.getCurrentMessageContext().getEnvelope().getHeader()