Wrap XML in Soap format in .Net 7

30 views Asked by At

I have to use a Web Services in Soap 1.1 in a web API application developed in .Net 7. It is a web services of the Spanish administration.

I need to save the XML that I send to the Web Service but in Soap format.

The first thing I did was add the wsdl to Connected Services in my application.

WSDL URL

I've been trying to generate it for several days but I only get the normal XML format, not soap format.

I need to get something like this:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sum="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd" xmlns:sum1="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
   <soapenv:Header />
   <soapenv:Body>
      <sum:AltaFactuSistemaFacturacion>
         <sum1:Cabecera>
            <sum1:IDVersion>1.0</sum1:IDVersion>
            <sum1:ObligadoEmision>
               <sum1:NombreRazon>XXXXX</sum1:NombreRazon>
               <sum1:NIF>XXXXX</sum1:NIF>
            </sum1:ObligadoEmision>
            <sum1:TipoRegistroAEAT>T0</sum1:TipoRegistroAEAT>
         </sum1:Cabecera>
         <sum:RegistroAltaFacturas>
            <sum:RegistroFacturacion>
               <sum1:IDFactura>
                  <sum1:IDEmisorFactura>
                     <sum1:NIF>XXXXX</sum1:NIF>
                  </sum1:IDEmisorFactura>
                  <sum1:NumSerieFacturaEmisor>12345</sum1:NumSerieFacturaEmisor>
                  <sum1:FechaExpedicionFacturaEmisor>13-11-2023</sum1:FechaExpedicionFacturaEmisor>
               </sum1:IDFactura>
               <sum1:NombreRazonEmisor>certificado uno telematicas</sum1:NombreRazonEmisor>
               <sum1:TipoRegistroSIF>S0</sum1:TipoRegistroSIF>
               <sum1:TipoFactura>F1</sum1:TipoFactura>
               <sum1:DescripcionOperacion>Descripc</sum1:DescripcionOperacion>
               <sum1:Destinatarios>
                  <sum1:IDDestinatario>
                     <sum1:NombreRazon>XXXXX</sum1:NombreRazon>
                     <sum1:NIF>XXXXX</sum1:NIF>
                  </sum1:IDDestinatario>
               </sum1:Destinatarios>
               <sum1:Desglose>
                  <sum1:DetalleDesglose>
                     <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
                     <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
                     <sum1:TipoImpositivo>4</sum1:TipoImpositivo>
                     <sum1:BaseImponibleOimporteNoSujeto>10</sum1:BaseImponibleOimporteNoSujeto>
                     <sum1:CuotaRepercutida>0.4</sum1:CuotaRepercutida>
                  </sum1:DetalleDesglose>
                  <sum1:DetalleDesglose>
                     <sum1:ClaveRegimen>01</sum1:ClaveRegimen>
                     <sum1:CalificacionOperacion>S1</sum1:CalificacionOperacion>
                     <sum1:TipoImpositivo>21</sum1:TipoImpositivo>
                     <sum1:BaseImponibleOimporteNoSujeto>100</sum1:BaseImponibleOimporteNoSujeto>
                     <sum1:CuotaRepercutida>21</sum1:CuotaRepercutida>
                  </sum1:DetalleDesglose>
               </sum1:Desglose>
               <sum1:ImporteTotal>131.4</sum1:ImporteTotal>
               <sum1:EncadenamientoRegistroAnterior>
                  <sum1:IDEmisorFacturaRegistroAnterior>
                     <sum1:NIF>XXXXX</sum1:NIF>
                  </sum1:IDEmisorFacturaRegistroAnterior>
                  <sum1:NumSerieFacturaRegistroAnterior>44</sum1:NumSerieFacturaRegistroAnterior>
                  <sum1:FechaExpedicionFacturaRegistroAnterior>13-02-2022</sum1:FechaExpedicionFacturaRegistroAnterior>
                  <sum1:HuellaRegistroAnterior>HuellaRegistroAnterior</sum1:HuellaRegistroAnterior>
               </sum1:EncadenamientoRegistroAnterior>
               <sum1:SistemaInformatico>
                  <sum1:NombreRazon>CERTIFICADO DOS TELEMATICAS</sum1:NombreRazon>
                  <sum1:NIF>XXXXX</sum1:NIF>
                  <sum1:NombreSistemaInformatico>NombreSistemaInformatico</sum1:NombreSistemaInformatico>
                  <sum1:IdSistemaInformatico>77</sum1:IdSistemaInformatico>
                  <sum1:Version>1.0.03</sum1:Version>
                  <sum1:NumeroInstalacion>383</sum1:NumeroInstalacion>
                  <sum1:TipoUsoPosibleSoloVerifactu>S</sum1:TipoUsoPosibleSoloVerifactu>
                  <sum1:TipoUsoPosibleOtros>N</sum1:TipoUsoPosibleOtros>
                  <sum1:TipoUsoPosibleMultiOT>N</sum1:TipoUsoPosibleMultiOT>
               </sum1:SistemaInformatico>
               <sum1:FechaGenRegistro>13-11-2023</sum1:FechaGenRegistro>
               <sum1:HoraGenRegistro>20:59:25</sum1:HoraGenRegistro>
               <sum1:HusoHorarioGenRegistro>02</sum1:HusoHorarioGenRegistro>
            </sum:RegistroFacturacion>
            <sum:DatosControl>
               <sum1:Huella>Huella</sum1:Huella>
               <sum1:TipoHash>01</sum1:TipoHash>
            </sum:DatosControl>
         </sum:RegistroAltaFacturas>
      </sum:AltaFactuSistemaFacturacion>
   </soapenv:Body>
</soapenv:Envelope>

But what I get is:

<?xml version="1.0" encoding="UTF-8"?>
<FacturasEmitidasType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <RegistroFacturacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
      <IDFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
         <IDEmisorFactura>
            <NIF>B-95465373</NIF>
         </IDEmisorFactura>
         <NumSerieFacturaEmisor>FC2024/19</NumSerieFacturaEmisor>
         <FechaExpedicionFacturaEmisor>05/03/2024</FechaExpedicionFacturaEmisor>
      </IDFactura>
      <NombreRazonEmisor xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">Clinica Dental</NombreRazonEmisor>
      <TipoRegistroSIF xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">S0</TipoRegistroSIF>
      <TipoFactura xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">F1</TipoFactura>
      <FechaOperacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">06/03/2024</FechaOperacion>
      <DescripcionOperacion xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">FC2024/19</DescripcionOperacion>
      <Destinatarios xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" />
      <Desglose xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">
         <DetalleDesglose>
            <ClaveRegimen>01</ClaveRegimen>
            <TipoImpositivo>0,00 €</TipoImpositivo>
            <BaseImponibleOimporteNoSujeto>2,00 €</BaseImponibleOimporteNoSujeto>
            <CuotaRepercutida>0,00 €</CuotaRepercutida>
         </DetalleDesglose>
      </Desglose>
      <ImporteTotal xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">2,00 €</ImporteTotal>
      <EncadenamientoRegistroAnterior xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd" />
      <FechaGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">06/03/2024</FechaGenRegistro>
      <HoraGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">19:20:31</HoraGenRegistro>
      <HusoHorarioGenRegistro xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">02</HusoHorarioGenRegistro>
   </RegistroFacturacion>
   <DatosControl xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroLR.xsd">
      <Huella xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">D72BB0598451EB1E0462F9CFCC44759235F13FDC8B3308E520C92AAC16A5C1EE</Huella>
      <TipoHash xmlns="https://www2.agenciatributaria.gob.es/static_files/common/internet/dep/aplicaciones/es/aeat/tike/cont/ws/SuministroInformacion.xsd">01</TipoHash>
   </DatosControl>
</FacturasEmitidasType>

The function I use is:

        private string Alta2XmlSoap(AltaFactuSistemaFacturacion envio)
        {

            StringBuilder xml = new StringBuilder();
            XmlWriter writer = XmlWriter.Create(xml);

            try
            {


                //// Create an instance of the XmlSerializer class.
                XmlTypeMapping myMapping =
                        new SoapReflectionImporter().ImportTypeMapping(typeof(AltaFactuSistemaFacturacionRequest));

                XmlSerializer mySerializer = new XmlSerializer(myMapping);

                writer.WriteStartElement("AltaFactuSistemaFacturacion");

                mySerializer.Serialize(writer, envio);

                writer.WriteEndElement();

                writer.Flush();


            }
            catch (Exception ex)
            {
               // throw ex;
            }
            finally
            {
                writer.Close();
            }
            return xml.ToString();

        }

what am I doing wrong?

Thanks for the help

0

There are 0 answers