none
Cómo puedo invocar y consumir un servicio web externo desde SharePoint 2010?

    Question

  • Hola,

    Necesito algo de ayuda, por favor.  No soy programador.

    Tengo que desarrollar una solución que, desde SharePoint 2010, invoque y consuma un servicio web de un proveedor externo que devuelve un XML; hasta el momento fui capaz de hacer sgte:

    1. Crear una solución en VS2010 para SharePoint como “Farm solution”.
    2. Agregar una application page que hace uso del MasterPage de nuestra Intranet
    3. Agregar un textbox y una drop-down list.
    4. Agregar la referencia al servicio web externo
    5. Generar el client proxy del servicio web usando este comando:

    wsdl /out:myProxyClass.cs http://hostServer/WebserviceRoot/WebServiceName.asmx?WSDL

    Este servicio web recibe 4 parámetros: usuario, clave, ID y tipo de ID. Sin embargo, no quiero que el usuario tenga que digitar su usuario y su clave cada vez que necesite hacer una consulta sino que solo deba elegir el tipo de ID y luego digitar el (ID) numero. Los dos parámetros restantes, clave y usuario, se le deben pasar al servicio web junto con los datos de la consulta (ID y Tipo de ID) de forma automática: transparente para el usuario.

    Por eso, necesito saber, por favor:

    ¿Esta bien lo que he hecho? (ver  5 ptos del listado de arriba).

    ¿Como puedo llamar/consumir el servicio web desde SP2010? (ya esta agregado, esto genero varios métodos.)

    ¿Cuáles librerías debo asegurarme de agregar y/o referenciar en la solución?

    ¿Cómo puedo pasarle los parámetros al servicio? ¿Es algo así?

    http://www.dominio.com/nombre_servicio_ws.asmx?User=Usuario_BD&Pwd=Clave_BD&TipoDoc=" & ddl_tipoDocumento.selectedtext & "&Doc=" & tx_docu.text

    ¿Cómo aplicarle el archivo XSLT al XML que recibo del servicio web?

    ¿Cómo guardo en una librería de SP los archivos HTML generados al aplicar el XSLT a los XML que devuelve el servicio?

    Gracias de antemano.

    Efebo!


    • Edited by efebo Tuesday, May 22, 2012 3:25 AM
    Tuesday, May 22, 2012 3:15 AM

Answers

  • Hola,

    Vaya lío tienes ;-)...varias cosas:

    • Para llamar a un Web Service en SharePoint cuentas con varias opciones: desde una WebPart como bien has dicho, desde un conector de BCS, desde una aplicación de Silverlight.
    • La forma de pasar parámetros al servicio depende de los métodos que en él hayas definido, es deci, no se trata de pasarlos por Url sino que en el servicio habrás implementado unos métodos que esperan recibir esos parámetros.
    • El usuario que está conectado en SharePoint lo puedes obtener a partir del objeto SPUser.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    Tuesday, May 22, 2012 6:27 AM
  • Hola,

    si, puedes llamar al servicio web de la misma forma qué lo haces en aplicaciones ASP.NET. Respecto a la segunda cuestión, revisa estos enlaces:

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    • Marked as answer by efebo Wednesday, May 23, 2012 12:18 PM
    Wednesday, May 23, 2012 6:32 AM

All replies

  • Hola,

    Vaya lío tienes ;-)...varias cosas:

    • Para llamar a un Web Service en SharePoint cuentas con varias opciones: desde una WebPart como bien has dicho, desde un conector de BCS, desde una aplicación de Silverlight.
    • La forma de pasar parámetros al servicio depende de los métodos que en él hayas definido, es deci, no se trata de pasarlos por Url sino que en el servicio habrás implementado unos métodos que esperan recibir esos parámetros.
    • El usuario que está conectado en SharePoint lo puedes obtener a partir del objeto SPUser.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    Tuesday, May 22, 2012 6:27 AM
  • Hola Juan Carlos,

    El listado de cosas que hice esta bien. No deje nada importante fuera?

    La llamada al servicio web, desde SharePoint, la debe disparar el boton de consulta. Es decir, el usuario escoge el tipo de ID y digita el numero y presiona el boton de consultar: esto debe invocar el servicio y darle los parametros.

    El usuario de SP y el usuario del servicio web externo son distintos.

    Gracias

    Efebo!

    Tuesday, May 22, 2012 9:48 AM
  • Hola,

    En principio no veo nada raro...en cuanto a los parámetros del servicio, en algún sitio tendrás que mapear la correspondencia entre el usuario de SharePoint y el usuario del servicio.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    Tuesday, May 22, 2012 11:11 AM
  • Juan, 

    Después de agregar el servicio y crear el client proxy como lo invoco desde mi pagina de SP2010?

    Puedo llamar el servicio web de la misma forma que lo haría desde una aplicación ASP.NET convencional o debo incluir algo mas?

    Conoces de algun método en .NET que pueda usar para formatear el archivo XML resultante usando un archivo XSLT?

    Gracias anticipadas,

    Efebo! 

    Tuesday, May 22, 2012 12:28 PM
  • Hola,

    si, puedes llamar al servicio web de la misma forma qué lo haces en aplicaciones ASP.NET. Respecto a la segunda cuestión, revisa estos enlaces:

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------

    • Marked as answer by efebo Wednesday, May 23, 2012 12:18 PM
    Wednesday, May 23, 2012 6:32 AM
  • Muchas gracias Juan!!
    Wednesday, May 23, 2012 12:18 PM