Привет! Я работаю над интеграцией со службой WCF. Я использую ссылку WSDL для генерации звонка в WCF.
Я всегда получаю сообщение Имя пользователя / пароль требуются вЗаголовок SOAP, но я не знаю, что я делаю неправильно.
Когда я сделал запрос через SOAPUI, работает отлично ..
Проблема в том, что метод получает два объекта.Первый - это обычная полезная нагрузка, а второй параметр имеет следующий тип:
public partial class SecurityHeaderType
{
private System.Xml.Linq.XElement[] anyField;
/// <remarks/>
[System.Xml.Serialization.XmlAnyElementAttribute(Order=0)]
public System.Xml.Linq.XElement[] Any
{
get
{
return this.anyField;
}
set
{
this.anyField = value;
}
}
}
Я создаю конверт с помощью XElements:
XElement securityHeaderXml = new XElement(soapenv + "Envelope",
new XAttribute(XNamespace.Xmlns + "soapenv", "http://schemas.xmlsoap.org/soap/envelope/"),
new XAttribute(XNamespace.Xmlns + "oas", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"),
new XAttribute(XNamespace.Xmlns + "ns", "http://www.opentravel.org/OTA/2003/05"),
new XElement(soapenv + "Header",
new XElement(oas + "Security",
new XElement(oas + "UsernameToken",
new XElement(oas + "Username", "someusername"),
new XElement(oas + "Password", "somepassword",
new XAttribute("Type",
"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"))
))), new XElement(soapenv + "Body",
new XElement(ns + "OTA_HotelAvailNotifRQ",
new XAttribute("EchoToken", "abc123"),
new XAttribute("Version", "1.0"),
new XAttribute("ResStatus", "Commit"),
new XAttribute("TimeStamp", DateTime.Now),
new XElement("AvailStatusMessages", new XAttribute("HotelCode", hotelCode)
, new XElement("AvailStatusMessage", new XAttribute("BookingLimit", 10),
new XElement("StatusApplicationControl", new XAttribute("Start", DateTime.Now),
new XAttribute("End", DateTime.Now.AddDays(4)),
new XAttribute("InvTypeCode", "A1K"), new
XAttribute("RatePlanCode", "GLD")
))))));
Если кто-то может мне помочь, я был бы признателенЭто!!