none
implementar y consumir un .wsdl de sap en c# web service RRS feed

  • Pregunta

  • Buenos Dias,
    me gustaria saber como puedo implentar un archivo .wsdl de SAP y consumir ese webservice.
    tengo nula experiencia en este tema adjunto el codigo .wsdl para mas informacion.

    resulta que los consultores de sap me enviaron este archivo test wsdl y me pidieron implementar y consumir el webservice con los campos que aparecen ahi. por favor necesito ayuda urgente

    cualquier ayuda se agradece

    <?xml version="1.0" encoding="UTF-8"?>
    <wsdl:definitions targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style" xmlns:n1="urn:sap-com:document:sap:rfc:functions" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:sap-com:document:sap:soap:functions:mc-style" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <wsdl:types>
        <xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:rfc:functions">
                <xsd:simpleType name="char10">
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="10"/>
                    </xsd:restriction>
                </xsd:simpleType>
                <xsd:simpleType name="char12">
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="12"/>
                    </xsd:restriction>
                </xsd:simpleType>
                <xsd:simpleType name="char40">
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="40"/>
                    </xsd:restriction>
                </xsd:simpleType>
                <xsd:simpleType name="unit3">
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="3"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:schema>
        <xsd:schema attributeFormDefault="qualified" targetNamespace="urn:sap-com:document:sap:soap:functions:mc-style" xmlns:n0="urn:sap-com:document:sap:rfc:functions">
                <xsd:import namespace="urn:sap-com:document:sap:rfc:functions"/>
                <xsd:simpleType name="char80">
                    <xsd:restriction base="xsd:string">
                        <xsd:maxLength value="80"/>
                    </xsd:restriction>
                </xsd:simpleType>
                <xsd:complexType name="ZppsTest">
                    <xsd:sequence>
                        <xsd:element name="Aufnr" type="n0:char12"/>
                        <xsd:element name="Plnbez" type="n0:char40"/>
                        <xsd:element name="Maktx" type="n0:char40"/>
                        <xsd:element name="Kdauf" type="n0:char10"/>
                        <xsd:element name="Plnme" type="n0:unit3"/>
                    </xsd:sequence>
                </xsd:complexType>
                <xsd:complexType name="ZppttTest">
                    <xsd:sequence>
                        <xsd:element maxOccurs="unbounded" minOccurs="0" name="item" type="tns:ZppsTest"/>
                    </xsd:sequence>
                </xsd:complexType>
                <xsd:element name="ZppwsTest">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="ItOrden" type="tns:ZppttTest"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element name="ZppwsTestResponse">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="ExMsg" type="tns:char80"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:schema>
      </wsdl:types>
      <wsdl:message name="ZppwsTestResponse">
        <wsdl:part name="parameter" element="tns:ZppwsTestResponse">
        </wsdl:part>
      </wsdl:message>
      <wsdl:message name="ZppwsTest">
        <wsdl:part name="parameters" element="tns:ZppwsTest">
        </wsdl:part>
      </wsdl:message>
      <wsdl:portType name="ZPPWS_TEST">
    <wsdl:documentation>
                <sapdoc:sapdoc xmlns:sapdoc="urn:sap:esi:documentation">
                    <sapdoc:docitem docURL="http://fish.com:8000/sap/bc/esdt/docu/sd_text?sap-client=110&amp;sd_name=ZPPWS_TEST"/>
                </sapdoc:sapdoc>
            </wsdl:documentation>
        <wsdl:operation name="ZppwsTest">
          <wsdl:input message="tns:ZppwsTest">
        </wsdl:input>
          <wsdl:output message="tns:ZppwsTestResponse">
        </wsdl:output>
        </wsdl:operation>
      </wsdl:portType>
      <wsdl:binding name="ZWS_TEST_soap12" type="tns:ZPPWS_TEST">
        <wsoap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <wsp:Policy>
                <wsp:PolicyReference URI="#BN__binding"/>
            </wsp:Policy>
        <wsdl:operation name="ZppwsTest">
          <wsoap12:operation soapAction="urn:sap-com:document:sap:soap:functions:mc-style:ZPPWS_TEST:ZppwsTestRequest" style="document"/>
          <wsdl:input>
            <wsoap12:body use="literal"/>
          </wsdl:input>
          <wsdl:output>
            <wsoap12:body use="literal"/>
          </wsdl:output>
        </wsdl:operation>
      </wsdl:binding>
      <wsdl:service name="ZWS_TEST">
        <wsdl:port name="ZWS_TEST_soap12" binding="tns:ZWS_TEST_soap12">
          <wsoap12:address location="https://e5684.us2.hana.com:443/cxf/Test_PP_ORD"/>
        </wsdl:port>
      </wsdl:service>
        <wsp:UsingPolicy required="true"/>
        <wsp:Policy wsu:Id="BN__binding">
            <wsp:ExactlyOne>
                <wsp:All>
                    <sp:TransportBinding xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
                        <wsp:Policy>
                            <sp:TransportToken>
                                <wsp:Policy>
                                    <sp:HttpsToken>
                                        <wsp:Policy>
                                        <wsp:ExactlyOne>
                                        <sp:HttpBasicAuthentication/>
                                        <sp:RequireClientCertificate/>
                                        </wsp:ExactlyOne>
                                        </wsp:Policy>
                                    </sp:HttpsToken>
                                </wsp:Policy>
                            </sp:TransportToken>
                            <sp:AlgorithmSuite>
                                <wsp:Policy>
                                    <wsp:ExactlyOne>
                                        <sp:Basic256/>
                                        <sp:Basic192/>
                                        <sp:Basic128/>
                                        <sp:TripleDes/>
                                        <sp:Basic256Rsa15/>
                                        <sp:Basic192Rsa15/>
                                        <sp:Basic128Rsa15/>
                                        <sp:TripleDesRsa15/>
                                        <sp:Basic256Sha256/>
                                        <sp:Basic192Sha256/>
                                        <sp:Basic128Sha256/>
                                        <sp:TripleDesSha256/>
                                        <sp:Basic256Sha256Rsa15/>
                                        <sp:Basic192Sha256Rsa15/>
                                        <sp:Basic128Sha256Rsa15/>
                                        <sp:TripleDesSha256Rsa15/>
                                    </wsp:ExactlyOne>
                                </wsp:Policy>
                            </sp:AlgorithmSuite>
                            <sp:Layout>
                                <wsp:Policy>
                                    <sp:Strict/>
                                </wsp:Policy>
                            </sp:Layout>
                        </wsp:Policy>
                    </sp:TransportBinding>
                </wsp:All>
            </wsp:ExactlyOne>
        </wsp:Policy>
    </wsdl:definitions>


    jueves, 26 de julio de 2018 15:19

Respuestas

  • hola

    si tienes el link al web service podrias crear un web reference

    sino tambien podrias ver de usar el comando wsdl.exe para crear el codigo del proxy si es que tienes un archivo con la definicion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 26 de julio de 2018 19:08
  • como puedo hacer lo mismo con c# = enviar esos valores y que el wsdl me conteste con un ok igual como lo hace el soapui
    cualquier ayuda sirve.la url la tengo ingresada en service reference.

    viernes, 27 de julio de 2018 21:39

Todas las respuestas

  • hola

    si tienes el link al web service podrias crear un web reference

    sino tambien podrias ver de usar el comando wsdl.exe para crear el codigo del proxy si es que tienes un archivo con la definicion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 26 de julio de 2018 19:08
  • como puedo hacer lo mismo con c# = enviar esos valores y que el wsdl me conteste con un ok igual como lo hace el soapui
    cualquier ayuda sirve.la url la tengo ingresada en service reference.

    viernes, 27 de julio de 2018 21:39
  • hola

    >>como puedo hacer lo mismo con c# = enviar esos valores y que el wsdl me conteste con un ok igual como lo hace el soapui

    puedes armar el string SOAP y usar el WebClient o HttpWebRequest

    Calling a Web Method in C# without Service Reference 

    analiza el Invoke() veras como alli en un string define el string del mensaje soap que envia

    como veras todo eso es lo que abstrae cuando creas la web reference que debrias programar

    otro ejemplo

    How to call a SOAP web service in .NET 4.0 C# without using the WSDL or proxy classes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 30 de julio de 2018 3:53
  • https://blogs.sap.com/2013/03/08/create-an-sap-web-service-call-web-service-from-net-application-passing-user-credentials/

    encontre esto igual pero no se ocuparlo en c# es lo mismo que debo hacer pero con lo que sap me envio si puede ayudarme por favor estoy hace algunos dias intentando solucionar este problema muchas gracias.

    lunes, 30 de julio de 2018 6:54
  • de hecho llevo esto pero no se como enviar los datos :/

     System.Net.NetworkCredential cred = new System.Net.NetworkCredential();

                var binding = new BasicHttpBinding();
                binding.MaxReceivedMessageSize = int.MaxValue;
                binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
                binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;


                //Assign address
                var address = new EndpointAddress("http://e5684-iflmap.hcisbt.us2.hana.ondemand.com/cxf/Test_PP_ORD?Wsdl");

                //Create service client
                var client = new balanzasap.(binding, address);

                //Assign credentials
                cred.UserName = "name";
                cred.Password = "pass";
                client.ClientCredentials.UserName.UserName = cred.UserName;
                client.ClientCredentials.UserName.Password = cred.Password;

    client.Open();

       balanzasap.ZppsTest input = new balanzasap.ZppsTest();
               
                {
                    input.Aufnr = "699899";
                    input.Plnbez = "5566";
                    input.Maktx = "Test-HCI";
                    input.Kdauf = "3";
                    input.Plnme = "KG";
                };

    // aqui no se como enviar estos parametros y el wsdl me conteste

    client.Close();

    //

    lunes, 30 de julio de 2018 6:57
  • hola 

     en mi caso  ya cree el web reference 

    ñpero necesito enviar un adjunto creando un header   que llevara usuario y contraseña   asi como se ve aca 

    gracias por la ayuda

    martes, 25 de junio de 2019 20:13