У меня есть часть данных XML, которая отправляется в API, в настоящий момент данные XML содержат жестко закодированные значения. Я хочу сделать это динамичным. Важно, когда пользователь отправляет запрос POST в мой API, используя определенный метод и определяя определенные входные данные, я хочу сопоставить эти входные данные с моим ВНЕШНИМ XML-шаблоном, а затем отправить этот запрос стороннему API.
В настоящее время все работает с использованием жестко закодированных значений, и я получаю ответ от стороннего API в виде строки XML, которую я сериализирую в объект и затем отображаю для пользователя.
Буду ли янужно создать еще один объект для запроса, а также ответ? я не уверен, как это сделать.
C # МЕТОД:
[HttpGet]
public Provisioning LLUCancel()
{
XmlDocument doc = new XmlDocument();
string path = HttpContext.Current.Server.MapPath("~/XML/Provisioning/LLUCancel.xml");
doc.Load(path);
string xml = doc.InnerXml;
string _url = "https://webservices.opalonline.co.uk/LLUProvisioningService/LLUPublicProvisioningWSV19.asmx";
string _action = "https://webservices.opalonline.co.uk/LLUPublicProvisioningWS/SendCommand";
var soapResult = WebService.ApiRequest(_url, _action, xml);
XmlDocument xmlToFormat = new XmlDocument();
xmlToFormat.LoadXml(soapResult);
string Outerxml = xmlToFormat.FirstChild.NextSibling.FirstChild.FirstChild.LastChild.OuterXml;
//Remove all namespaces
var xmlToBeStripped = XElement.Parse(Outerxml);
string finalXml = XmlFormatter.stripNS(xmlToBeStripped).ToString();
Provisioning result;
// Deserialises xlm into an object
XmlSerializer serializer = new XmlSerializer(typeof(Provisioning));
using (TextReader reader = new StringReader(finalXml))
{
result = (Provisioning)serializer.Deserialize(reader);
}
return result;
}
XML:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SendCommand xmlns="https://webservices.opalonline.co.uk/LLUPublicProvisioningWS">
<request>
<UserCredentials>
<Username>username</Username>
<Password>PASS</Password>
<AgentID>794</AgentID>
</UserCredentials>
<Command xsi:type="LLUCancelCommand">
<ResellerReference>TTB Test</ResellerReference>
<ResellerAccountReference>XML Example</ResellerAccountReference>
<CancellingRID>BVE</CancellingRID>
<TargetCommandID>114102073</TargetCommandID>
<Provisioning xsi:type="CLIProvisioningIdentifier">
<CLI>01514890609</CLI>
</Provisioning>
<CancelReason>OrderCancelledByOperator</CancelReason>
</Command>
</request>
</SendCommand>
</soap:Body>
</soap:Envelope>
В настоящее время я не передаю никаких параметров, но этоследующий шаг /