Axis2 SOAP信封标题信息

时间:2009-08-24 21:46:24

标签: java soap header axis2

我正在使用一个将身份验证令牌放在SOAP信封标头中的Web服务。看来(通过查看WS WSDL附带的示例)如果在.NET中生成存根,则此标头信息通过存根类中的成员变量公开。但是,当我使用WSDL2Java生成Axis2 java存根时,它似乎不会在任何地方暴露。

从SOAP信封标题中提取此信息的正确方法是什么?

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

C#样本:


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

该示例说明了我想做的事情。请注意secSvc实例如何在成功SecurityHeaderValue调用后填充secSvc.SignIn()成员变量。

以下是有关SignIn方法的一些相关API文档:

虽然没有返回值,但成功登录将填充安全服务的SecurityHeaderValue。然后,SecurityHeaderValue信息将用于其他Web服务调用。

1 个答案:

答案 0 :(得分:2)

我相信您正在寻找的电话是:

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