none
Enviar datos a un wcf service ChanellFactory RRS feed

  • Pregunta

  • Cordial saludo

    tengo el siguientes datos que me pide el web service

                      <xsd:complexType name="Certificados_DTO">
            <xsd:annotation>
              <xsd:appinfo source="xxxxxx>
            </xsd:annotation>
            <xsd:sequence>
              <xsd:element minOccurs="0" name="NIT_Proveedor" type="xsd:string" />
              <xsd:element minOccurs="0" name="Tipo_Impuesto" type="xsd:string" />
              <xsd:element minOccurs="0" name="Ciudad" type="xsd:string" />
              <xsd:element minOccurs="0" name="Ejercicio" type="xsd:string" />
              <xsd:element minOccurs="0" name="Periodo" type="xsd:string" />
            </xsd:sequence>
          </xsd:complexType>
        </xsd:schema>
      </wsdl:types>
      <wsdl:message name="Certi_OutMsg">

    tengo que leerlo con ChanelFactory (que NUNCA he realizado)

    y lo que he hecho algo parecido a esto 

    BasicHttpBinding myBinding = new BasicHttpBinding();
    EndpointAddress myEndpoint = new EndpointAddress("http://10.10.1.29:3047/Certi_OutMsg.svc");
    ChannelFactory<CertificadosChanel> myChannelFactory = new ChannelFactory<CertificadosChanel>(myBinding, myEndpoint);
    
    CertificadosChanel instance = myChannelFactory.CreateChannel();
    // Call Service.
    Console.WriteLine(instance.XXXXX);
    
    myChannelFactory.Close();

    Por SoapUI

    Me arroja el siguiente Resultado

      <soapenv:Body>
          <urn:Certificados>
             <!--Optional:-->
             <NIT_Proveedor>8333111111</NIT_Proveedor>
             <!--Optional:-->
             <Tipo_Impuesto>CO2</Tipo_Impuesto>
             <!--Optional:-->
             <Ciudad>xxx</Ciudad>
             <!--Optional:-->
             <Ejercicio>2015</Ejercicio>
             <!--Optional:-->
             <Periodo>5</Periodo>
          </urn:Certificados>
       </soapenv:Body>

    La pregunta en la linea 

    Console.WriteLine(instance.XXXXX);

    no me aparece ninguna opcion para asignar nit, ciudad etc

    de donde se obtiene la interface de los datos que coloco??


    • Editado greg_dorian miércoles, 30 de noviembre de 2016 18:38
    miércoles, 30 de noviembre de 2016 18:31

Respuestas

  • Hola, 

    lo que tienes que hacer es conformar primero tu mensaje request. Seguro tienes algo parecido a un CertificadoRequest o algo, una clase que define el mensaje a enviar

    BasicHttpBinding myBinding = new BasicHttpBinding();
    EndpointAddress myEndpoint = new EndpointAddress("http://10.10.1.29:3047/Certi_OutMsg.svc");
    ChannelFactory<CertificadosChanel> myChannelFactory = new ChannelFactory<CertificadosChanel>(myBinding, myEndpoint);
    
    CertificadosChanel instance = myChannelFactory.CreateChannel();
    // Call Service.
    var request = new CertificadoRequest()
    {
    	NIT_Proveedor = "8333111111",
    	Tipo_Impuesto = "CO2",
    	Ciudad = "xxx",
    	Ejercicio = 2015,
    	Periodo = 5
    }
    
    Console.WriteLine(instance.Certificado(request));
    
    myChannelFactory.Close();


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta greg_dorian martes, 6 de diciembre de 2016 18:56
    lunes, 5 de diciembre de 2016 10:54
    Moderador