Я пытаюсь сгенерировать этот XML-код Soap:
TestUser02
Password1
1
100001
0
0
1
0
Но я получаю этот XML, используя свой код ниже:
TestUser02
Password1
1
100001
0
0
1
0
У меня есть код C#:
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace WorkDayAPI
{
[XmlRoot("Envelope", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope
{
[XmlElement("Header")]
public Header Header { get; set; }
[XmlElement("Body")]
public Body Body { get; set; }
}
public class Header
{
[XmlElement("Security", Namespace = "http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd")]
public Security Security { get; set; }
[XmlElement("Workday_Common_Header", Namespace = "urn:com.workday/bsvc")]
public WorkdayCommonHeader WorkdayCommonHeader { get; set; }
}
public class Security
{
[XmlAttribute("mustUnderstand", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public string MustUnderstand { get; set; }
[XmlElement("UsernameToken", Namespace = "http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd")]
public UsernameToken UsernameToken { get; set; }
}
public class UsernameToken
{
[XmlElement("Username")]
public string Username { get; set; }
[XmlElement("Password", Namespace = "http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd")]
public string Password { get; set; }
[XmlAttribute("Type")]
public string PasswordType { get; set; }
}
public class WorkdayCommonHeader
{
[XmlElement("Include_Reference_Descriptors_In_Response", Namespace = "urn:com.workday/bsvc")]
public string IncludeReferenceDescriptorsInResponse { get; set; }
}
public class Body
{
[XmlElement("Get_Customers_Request", Namespace = "urn:com.workday/bsvc")]
public GetCustomersRequest GetCustomersRequest { get; set; }
}
public class GetCustomersRequest
{
[XmlElement("Request_References", Namespace = "urn:com.workday/bsvc")]
public RequestReferences RequestReferences { get; set; }
[XmlAttribute("version", Namespace = "urn:com.workday/bsvc")]
public string Version { get; set; }
[XmlElement("Response_Group", Namespace = "urn:com.workday/bsvc")]
public ResponseGroup ResponseGroup { get; set; }
}
public class RequestReferences
{
[XmlElement("Customer_Reference", Namespace = "urn:com.workday/bsvc")]
public CustomerReference CustomerReference { get; set; }
}
public class CustomerReference
{
[XmlAttribute(AttributeName = "Descriptor", Namespace = "urn:com.workday/bsvc")]
public string Descriptor { get; set; }
[XmlElement(ElementName = "ID")]
public CustomerData CustomerData { get; set; }
}
[XmlType(Namespace = "urn:com.workday/bsvc")]
public class CustomerData
{
[XmlText]
public string ID { get; set; }
[XmlAttribute(AttributeName = "type", Namespace = "urn:com.workday/bsvc")]
public string Type { get; set; }
}
public class ResponseGroup
{
[XmlElement("Include_Reference", Namespace = "urn:com.workday/bsvc")]
public string IncludeReference { get; set; }
[XmlElement("Include_Customer_Data", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerData { get; set; }
[XmlElement("Include_Customer_Balance", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerBalance { get; set; }
[XmlElement("Include_Customer_Activity_Detail", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerActivityDetail { get; set; }
}
}
Вот как я настраиваю пространства имен и присваиваю значения:
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using WorkDayAPI.Input;
namespace WorkDayAPI
{
class Program
{
static void Main(string[] args)
{
GenerateSoapXmlRequest();
}
public static void GenerateSoapXmlRequest()
{
// Create the request object and populate it with values
var soapRequest = new Envelope
{
Header = new Header
{
Security = new Security
{
MustUnderstand = "1",
UsernameToken = new UsernameToken
{
Username = "TestUser02",
Password = "Password1",
PasswordType = "http://docs.oasis-open.org/wss/2004/01/ ... sswordText"
}
},
WorkdayCommonHeader = new WorkdayCommonHeader
{
IncludeReferenceDescriptorsInResponse = "1"
}
},
Body = new Body
{
GetCustomersRequest = new GetCustomersRequest
{
Version = "v42.0",
RequestReferences = new RequestReferences
{
CustomerReference = new CustomerReference
{
Descriptor = "?",
CustomerData = new CustomerData
{
Type = "Customer_ID",
ID = "100001"
}
}
},
ResponseGroup = new ResponseGroup
{
IncludeReference = "0",
IncludeCustomerData = "0",
IncludeCustomerBalance = "1",
IncludeCustomerActivityDetail = "0"
}
}
}
};
// Prepare the namespaces with appropriate prefixes
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.Add("bsvc", "urn:com.workday/bsvc");
namespaces.Add("wsse", "http://docs.oasis-open.org/wss/2004/01/ ... xt-1.0.xsd");
// Create an XmlSerializer instance for the Envelope class
var serializer = new XmlSerializer(typeof(Envelope));
// Create a StringWriter to hold the serialized XML
using (var stringWriter = new StringWriter())
{
// Create an XmlWriterSettings object to control XML formatting
var xmlSettings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
Indent = true,
OmitXmlDeclaration = true
};
// Create an XmlWriter with the settings and namespaces
using (var xmlWriter = XmlWriter.Create(stringWriter, xmlSettings))
{
// Serialize the object to XML, passing the namespaces
serializer.Serialize(xmlWriter, soapRequest, namespaces);
}
// Get the generated XML as a string
string soapXml = stringWriter.ToString();
// Print the serialized XML to the console
Console.WriteLine(soapXml);
// Optionally, save the XML to a file
File.WriteAllText("SoapRequest.xml", soapXml);
}
}
}
}
Как исправить атрибут Type в пароле?
Как установить пространство имен bsvc< /strong> в атрибуте Body?
Вот разница между обязательным и сгенерированным XML:
ComparisonPic:[![enter image description here][1]][1]
Подробнее здесь: https://stackoverflow.com/questions/792 ... ly-passwor
Сериализация XML C#.NET: XMLAttribute не устанавливает NameSpace, и только элемент пароля в объекте UserName имеет атриб ⇐ C#
Место общения программистов C#
1732074947
Anonymous
Я пытаюсь сгенерировать этот XML-код Soap:
TestUser02
Password1
1
100001
0
0
1
0
Но я получаю этот XML, используя свой код ниже:
TestUser02
Password1
1
100001
0
0
1
0
У меня есть код C#:
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
namespace WorkDayAPI
{
[XmlRoot("Envelope", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public class Envelope
{
[XmlElement("Header")]
public Header Header { get; set; }
[XmlElement("Body")]
public Body Body { get; set; }
}
public class Header
{
[XmlElement("Security", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]
public Security Security { get; set; }
[XmlElement("Workday_Common_Header", Namespace = "urn:com.workday/bsvc")]
public WorkdayCommonHeader WorkdayCommonHeader { get; set; }
}
public class Security
{
[XmlAttribute("mustUnderstand", Namespace = "http://schemas.xmlsoap.org/soap/envelope/")]
public string MustUnderstand { get; set; }
[XmlElement("UsernameToken", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]
public UsernameToken UsernameToken { get; set; }
}
public class UsernameToken
{
[XmlElement("Username")]
public string Username { get; set; }
[XmlElement("Password", Namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")]
public string Password { get; set; }
[XmlAttribute("Type")]
public string PasswordType { get; set; }
}
public class WorkdayCommonHeader
{
[XmlElement("Include_Reference_Descriptors_In_Response", Namespace = "urn:com.workday/bsvc")]
public string IncludeReferenceDescriptorsInResponse { get; set; }
}
public class Body
{
[XmlElement("Get_Customers_Request", Namespace = "urn:com.workday/bsvc")]
public GetCustomersRequest GetCustomersRequest { get; set; }
}
public class GetCustomersRequest
{
[XmlElement("Request_References", Namespace = "urn:com.workday/bsvc")]
public RequestReferences RequestReferences { get; set; }
[XmlAttribute("version", Namespace = "urn:com.workday/bsvc")]
public string Version { get; set; }
[XmlElement("Response_Group", Namespace = "urn:com.workday/bsvc")]
public ResponseGroup ResponseGroup { get; set; }
}
public class RequestReferences
{
[XmlElement("Customer_Reference", Namespace = "urn:com.workday/bsvc")]
public CustomerReference CustomerReference { get; set; }
}
public class CustomerReference
{
[XmlAttribute(AttributeName = "Descriptor", Namespace = "urn:com.workday/bsvc")]
public string Descriptor { get; set; }
[XmlElement(ElementName = "ID")]
public CustomerData CustomerData { get; set; }
}
[XmlType(Namespace = "urn:com.workday/bsvc")]
public class CustomerData
{
[XmlText]
public string ID { get; set; }
[XmlAttribute(AttributeName = "type", Namespace = "urn:com.workday/bsvc")]
public string Type { get; set; }
}
public class ResponseGroup
{
[XmlElement("Include_Reference", Namespace = "urn:com.workday/bsvc")]
public string IncludeReference { get; set; }
[XmlElement("Include_Customer_Data", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerData { get; set; }
[XmlElement("Include_Customer_Balance", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerBalance { get; set; }
[XmlElement("Include_Customer_Activity_Detail", Namespace = "urn:com.workday/bsvc")]
public string IncludeCustomerActivityDetail { get; set; }
}
}
Вот как я настраиваю пространства имен и присваиваю значения:
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using WorkDayAPI.Input;
namespace WorkDayAPI
{
class Program
{
static void Main(string[] args)
{
GenerateSoapXmlRequest();
}
public static void GenerateSoapXmlRequest()
{
// Create the request object and populate it with values
var soapRequest = new Envelope
{
Header = new Header
{
Security = new Security
{
MustUnderstand = "1",
UsernameToken = new UsernameToken
{
Username = "TestUser02",
Password = "Password1",
PasswordType = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"
}
},
WorkdayCommonHeader = new WorkdayCommonHeader
{
IncludeReferenceDescriptorsInResponse = "1"
}
},
Body = new Body
{
GetCustomersRequest = new GetCustomersRequest
{
Version = "v42.0",
RequestReferences = new RequestReferences
{
CustomerReference = new CustomerReference
{
Descriptor = "?",
CustomerData = new CustomerData
{
Type = "Customer_ID",
ID = "100001"
}
}
},
ResponseGroup = new ResponseGroup
{
IncludeReference = "0",
IncludeCustomerData = "0",
IncludeCustomerBalance = "1",
IncludeCustomerActivityDetail = "0"
}
}
}
};
// Prepare the namespaces with appropriate prefixes
var namespaces = new XmlSerializerNamespaces();
namespaces.Add("soapenv", "http://schemas.xmlsoap.org/soap/envelope/");
namespaces.Add("bsvc", "urn:com.workday/bsvc");
namespaces.Add("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
// Create an XmlSerializer instance for the Envelope class
var serializer = new XmlSerializer(typeof(Envelope));
// Create a StringWriter to hold the serialized XML
using (var stringWriter = new StringWriter())
{
// Create an XmlWriterSettings object to control XML formatting
var xmlSettings = new XmlWriterSettings
{
Encoding = Encoding.UTF8,
Indent = true,
OmitXmlDeclaration = true
};
// Create an XmlWriter with the settings and namespaces
using (var xmlWriter = XmlWriter.Create(stringWriter, xmlSettings))
{
// Serialize the object to XML, passing the namespaces
serializer.Serialize(xmlWriter, soapRequest, namespaces);
}
// Get the generated XML as a string
string soapXml = stringWriter.ToString();
// Print the serialized XML to the console
Console.WriteLine(soapXml);
// Optionally, save the XML to a file
File.WriteAllText("SoapRequest.xml", soapXml);
}
}
}
}
Как исправить атрибут [b]Type[/b] в пароле?
Как установить пространство имен bsvc< /strong> в атрибуте Body?
Вот разница между обязательным и сгенерированным XML:
ComparisonPic:[![enter image description here][1]][1]
Подробнее здесь: [url]https://stackoverflow.com/questions/79205752/c-net-xml-serialization-xmlattribute-is-not-setting-namespace-and-only-passwor[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия