Отображение XML на входящие параметры - PullRequest
0 голосов
/ 24 октября 2019

У меня есть часть данных 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>

В настоящее время я не передаю никаких параметров, но этоследующий шаг /

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