Информация заголовка конверта SOAP Axis2 - PullRequest
5 голосов
/ 25 августа 2009

Я использую веб-сервис, который помещает токен аутентификации в заголовок конверта SOAP. Кажется (просматривая примеры, поставляемые с WS WSLL), что если заглушка генерируется в .NET, эта информация заголовка предоставляется через переменную-член в классе заглушки. Однако, когда я генерирую свою заглушку Axis2 с использованием WSDL2Java, она, кажется, нигде не раскрывается.

Как правильно извлечь эту информацию из заголовка конверта 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().

Вот некоторая соответствующая документация API, касающаяся метода SignIn:

Хотя возвращаемого значения нет, успешный вход в систему заполнит значение SecurityHeaderValue службы безопасности. Информация SecurityHeaderValue затем используется для других вызовов веб-служб.

1 Ответ

2 голосов
/ 04 мая 2013

Я считаю, что вы ищете:

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

...