Вы можете добавить информацию заголовка мыла к вызовам методов, декорировав методы в прокси-классе, сгенерированном из wsdl, с атрибутом SoapHeader.
Например, wsdl.exe сгенерирует прокси-класс клиента Reference.cs дляСсылка на веб-сервис, когда вы «Добавить веб-ссылку».В упомянутой выше ссылке https://stage.totalcheck.sensis.com.au/service/webservice?wsdl есть сообщение offerAddress, которое будет преобразовано в метод в сгенерированном файле кода прокси клиента reference.cs при добавлении веб-ссылки из Visual Studio.По умолчанию при вызове этого метода в конверте мыла не будет заголовка.Чтобы добавить SoapHeader в конверт для этого запроса, добавьте атрибут [SoapHeader ("Security")] в начало метода SuggestAddress в сгенерированном классе Reference.cs, где "Security" - это класс, который наследуется от базового класса SoapHeader.
В качестве примера вышеупомянутого необходимого Security SoapHeader вы должны создать следующие классы,
public partial class Security : SoapHeader
{
public UserNameToken UserNameToken { get; set; }
}
public partial class UserNameToken
{
public string UserName { get; set; }
public string Password { get; set; }
}
Затем вы украсите метод SuggestAddress в файле reference.cs, как показано ниже,
[SoapHeader("Security")]
public suggestAddressesResult suggestAddresses([System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)] addressSearch search) {
object[] results = this.Invoke("suggestAddresses", new object[] {search});
return ((suggestAddressesResult)(results[0]));
}
Это обеспечит, чтобы каждый конверт, созданный при вызове метода offerAddress, содержал заголовок безопасности, похожий на упомянутый выше,
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>username</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>