2009-08-24 11 views
5

Ich bin ein Web-Service konsumieren, die ein Authentifizierungstoken in den SOAP-Umschlag Header platziert. Es scheint (durch das Betrachten der Beispiele, die mit der WS-WSDL geliefert wurden), dass, wenn der Stub in .NET generiert wird, diese Headerinformationen über eine Membervariable in der Stub-Klasse verfügbar gemacht werden. Wenn ich jedoch meinen Axis2-Java-Stub mit WSDL2Java erzeuge, scheint er nirgendwo verfügbar zu sein.Axis2 SOAP Envelope Header Informationen

Was ist der richtige Weg, um diese Informationen aus dem SOAP-Umschlag Header zu extrahieren?

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

C# Sample:


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; 
     } 
    } 
} 

Die Probe zeigt, was ich tun möchte. Beachten Sie, dass die secSvc Instanz eine SecurityHeaderValue Membervariable hat, die nach einem erfolgreichen secSvc.SignIn() Aufruf aufgefüllt wird.

Hier einig relevante API-Dokumentation über die SignIn Methode:

Zwar gibt es keinen Rückgabewert ist, ein erfolgreiches Zeichen in den SecurityHeaderValue des Sicherheitsdienstes bevölkern werden. Die SecurityHeaderValue-Informationen werden dann für andere Web-Service-Aufrufe verwendet.
+0

kann Ihnen ein Beispiel geben, schreiben die wsdl, etwas Konkretes? – skaffman

+0

Ich habe das gleiche Problem – LiorH

Antwort

1

Ich glaube, der Ruf nach dem Sie suchen ist:

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

Verwandte Themen