Создать SOAP-заголовок? - PullRequest
       7

Создать SOAP-заголовок?

3 голосов
/ 19 октября 2010

Как добавить заголовок веб-службы SOAP?

Пример

<soap:Header>
    <myHeader xmlns="https://www.domain.com">
        <Username>string</Username>
        <Password>string</Password>
    </myHeader>
</soap:Header>

исходный код

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;


namespace TestWebServices
{
    /// <summary>
    /// Summary description
    /// </summary>
    [WebService(Namespace = "https://Test.com")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    public class Testing : System.Web.Services.WebService
    {

        [WebMethod]
        public string GetTestValue()
        {


            return "xyz";
        }
    }

}

Ответы [ 4 ]

4 голосов
/ 19 октября 2010

Как насчет:

public class MyHeader : SoapHeader
{
    public string Username;
    public string Password;
}

Здесь есть еще что-то по теме:

Использование заголовков SOAP (MSDN)

Определение и обработка заголовков SOAP (MSDN)

3 голосов
/ 10 июля 2012

Если вам нужен точный контроль зерна при визуализации XML-заголовка мыла (происходит при взаимодействии с веб-сервисом, написанным на Java), вы всегда можете переопределить весь рендеринг, реализовав IXmlSerializable

[XmlRoot("customHeader", Namespace = "http://somecompany.com/webservices/security/2012/topSecret")]
public class customHeader: SoapHeader, IXmlSerializable
{
    public customHeader()
    {
        Actor = "http://schemas.xmlsoap.org/soap/actor/next";
        MustUnderstand = false;
    }

    public System.Xml.Schema.XmlSchema GetSchema()
    {
        return null;
        //throw new NotImplementedException();
    }

    public void ReadXml(XmlReader reader)
    {
        //throw new NotImplementedException();
    }

    public void WriteXml(XmlWriter writer)
    {
        writer.WriteAttributeString("soap:actor", Actor);
        writer.WriteAttributeString("soap:mustUnderstand", MustUnderstand ? "1" : "0");
        writer.WriteRaw("some encrypted data");
        //get it exactly the way you want it in here without mucking with Xml* property attributes for hours on end
        //writer.WriteElement(...);
    }
}
0 голосов
/ 22 июня 2011
EndpointAddressBuilder builder = new EndpointAddressBuilder(client.Endpoint.Address);
AddressHeader header = AddressHeader.CreateAddressHeader("apiKey", "http://tempuri.org", "longapikeyhere");

builder.Headers.Add(header);
client.Endpoint.Address = builder.ToEndpointAddress();
0 голосов
/ 19 октября 2010

SOAP-сообщение с заголовками может выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Header>
    <Username>string</Username>
    <Password>string</Password>
  </soap:Header>

</soap:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...