none
Error al consumir un Servicio Web. "Se necesita uno de los elementos "SOAP Header"." RRS feed

  • Pregunta

  • Buenas.

    Soy nuevo en el foro, y espero que puedan ayudarme. Estoy intentando consumir un servicio web. Agregué la referencia del servicio web al proyecto. pero al intentar ejecutar el método del servicio recibo el siguiente error:

    com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5048E: Se necesita uno de los elementos "SOAP Header".

    la verdad es que me trae de cabeza porque no soy capaz de hacer que funcione.

    Gracias de antemano.

    viernes, 1 de abril de 2016 11:49

Todas las respuestas

  • Hola

    Cuando envías peticiones a un servicio SOAP en el mensaje s genera una estructura que tiene <SOAP: HEADER>

    Seguro te falta algún elemento dentro de dicha cabecera. Cómo has realizado el cliente? Por Web Refernce o por Service Reference?



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

    viernes, 1 de abril de 2016 12:12
  • Pregunta Frannr tenes la firma del Webservice? osea los datos que necesita? no te falta enviarle ninguno?

    Por favor recuerde &quot;Marcar como respuesta&quot; las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft. Este contenido es proporcionado &quot;tal cual&quot; y no implica ninguna responsabilidad de parte de Microsoft.

    viernes, 1 de abril de 2016 12:13
  • La verdad que he intentado crear el cliente de las dos formas y de ninguna manera he conseguido que funcione. De todas formas ahora mismo lo tengo creado como Service Reference. con los parámetros del método del servicio no ha problema, van todos los que necesita pero no se como meterle el usuario y el pass en la la cabecera del mensaje soap.
    lunes, 4 de abril de 2016 7:25
  • los parámetros que necesita la función del servicio van todos, con eso no hay problema. el problema es meter en el header el usuario y pass. 
    lunes, 4 de abril de 2016 7:26
  • Hola. Puedes mostrarnos como debe ser esa cabecera? Es la típica de ese Security? Tienes un xml de ejemplo?

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

    lunes, 4 de abril de 2016 7:36
  • pues según la documentación del servicio la cabecera debería de ser así:

       <soapenv:Header>

          <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

             <wsse:UsernameToken wsu:Id="UsernameToken-37" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

                <wsse:Username>USUARIO</wsse:Username>

                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>

                <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">m5gVNVo297rAQgcyXjvziw==</wsse:Nonce>

                <wsu:Created>2012-10-19T06:46:10.151Z</wsu:Created>

             </wsse:UsernameToken>

          </wsse:Security>

       </soapenv:Header>

    lunes, 4 de abril de 2016 7:40
  • Pruaba a crear el binding de tu cliente de la siguiente forma

    <bindings>
      <customBinding >
        <binding name="MyBindingName" >
          <mtomMessageEncoding messageVersion="Soap11" /> <!-- or Soap12 -->
          <security authenticationMode="UserNameOverTransport"
                    includeTimestamp="false">            
          </security>
        </binding>
      </customBinding>
    </bindings>


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

    lunes, 4 de abril de 2016 8:16
  • el modificado el binding pero sigue con el mismo error. 
    lunes, 4 de abril de 2016 8:51
  • Puedes usar Fiddler para capturar el mensaje enviado al servicio y ver cómo se ha generado?

    Porque otra solución es crear un behaviour para tu cliente proxy y agregar las cabeceras 


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


    lunes, 4 de abril de 2016 8:57
  • Voy a intentar lo del behaviour y os comento..... 
    lunes, 4 de abril de 2016 9:01
  • sigue todo igual. Esto empieza a ser un poco humillante. Algo tan sencillo como consumir un servicio no puede tener tanto misterio.
    lunes, 4 de abril de 2016 10:13
  • Crear cabeceras SOAP de WseSecurity puedes hacerlas siguiendo la solución de

    http://stackoverflow.com/questions/16028014/how-can-i-pass-a-username-password-in-the-header-to-a-soap-wcf-service


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

    lunes, 4 de abril de 2016 10:56
  • Gracias, le voy a echar un vistazo.
    lunes, 4 de abril de 2016 11:05