Consumir Webservice con credenciales de seguridad

1,621 views
Skip to first unread message

diegod...@gmail.com

unread,
Jun 6, 2018, 2:08:39 PM6/6/18
to publice...@googlegroups.com

Hola a todos

                              Al consumir un webservice desde me aparece el siguiente cartel:

 

Seguridad de Windows 
vfp9.exe 
El servidor elet.payback.mx está solicitando su nombre de 
usuario y contraseña. El servidor informa que es de PAYBACK 
x 
Services. 
ser name 
Password 
Remember rny credentials 
Aceptar 
Cancelar

 

Una vez ingresado el user y pass, no hay problemas y funciona bien pero no deseo que aparezca el cartel.  En el pFileRequest tengo ingresados los campos de usuario y pass. Si los saco, arroja error.

Supongo que debo ingresar el user y pass también en la función EjecutaWS.

¿Alguien sabe cual es la forma de hacerlo?

 

*---------------------------------------------------

FUNCTION EjecutaWS(pURL_WSDL, pFileRequest , pFileResponse )

*---------------------------------------------------

    TRY

     * --- oHTTP = CREATEOBJECT('Msxml2.ServerXMLHTTP.6.0')

     oHTTP = CREATEOBJECT("Msxml2.XMLHTTP.6.0")

     oHTTP.OPEN("POST", pURL_WSDL, .F.)

     oHTTP.setRequestHeader("User-Agent", "EjecutandoWS")

     oHTTP.setRequestHeader("Content-Type", "text/xml;charset=utf-8")

     oHTTP.SEND(pFileRequest)

    CATCH TO loErr

      this.sError = "Error: " + TRANSFORM(loErr.ErrorNo) +  " Mensaje: " + loErr.Message

      this.iStatus = -1     

    ENDTRY

    IF this.iStatus != 0

     RETURN -1

    ENDIF

     * --- Si el status es diferente a 200, ocurrió algún error de conectividad con el WS ---

     IF oHTTP.STATUS = 200

         RespuestaWS = oHTTP.responseText

      * --- Se genera el XML del response | Este es el paso 3!! ---

      STRTOFILE(STRCONV(RespuestaWS,9),pXMLResponse)

      this.iStatus = 0

      this.sError = ""

      RETURN 0

     ELSE

         this.sError = "Error: No se logró la conexión con el Web Service."

         this.iStatus = -1

   RETURN -1

     ENDIF

ENDFUNC

 *---------------------------------------------------

 

Desde ya, muchisimas gracias

Diego

 

From: publice...@googlegroups.com <publice...@googlegroups.com> On Behalf Of Antonio Meza
Sent: miércoles, 6 de junio de 2018 13:11
To: Comunidad de Visual Foxpro en Español <publice...@googlegroups.com>
Subject: [vfp] Re: Aclarando estas dudas para continuar Creando y Programando en Visual FoxPro y Firebird

 

Hola mapner!!

 

Nunca he usado prefijos en los nombres de la tablas tanto en Dbf como en MariaDb, cual es la ventaja de hacer eso?

 

En mi caso uso el nombre de lo que voy a almacenar y desde luego se tiene el directorio de la base de datos donde puedes ver si es un catalogo, una tabla maestra o detalle, las relaciones, indices, etc.

 

usuarios

usuarios_empresas

usuarios_permisos

 

clientes

clientes_datos

clientes_domicilios

clientes_tarifas

clientes_creditos

 

facturas

facturas_ingresos

facturas_impuestos

 

polizas

polizas_movimientos

polizas_tipos 

etc

 

saludos

Antonio Meza

El martes, 5 de junio de 2018, 11:17:00 (UTC-5), mapner escribió:

En concreto:

Más allá de las tablas de negocio de cada módulo (sugiero que dichas tablas tengan prefijo que indiquen el módulo, por ejemplo alm_ almacén o nom_ nómina) están las tablas de acceso y seguridad, del tipo:
Sys_Usuarios
Sys_Grupos
Sys_Permisos

Y la tabla de despliegue de menús en forma de árbol
Sys_Menú

donde el nivel cero de dicho árbol son los módulos principales (ej: Sistema de Almacén, Sistema de Nóminas,...)

En cuanto a los ejecutables

Puedes hacer un único exe con todos los módulos incluidos o
Un exe para acceso (login y shell) y despliegue de módulos y luego exes separados por cada módulo.

La integración de exes también se puede hacer de diferentes maneras..., el exe principal o Shell puede invocar los demás exes con SET PROCEDURE TO ...

Saludos

image001.jpg

Jorge Leandro

unread,
Jun 7, 2018, 6:37:11 AM6/7/18
to Comunidad de Visual Foxpro en Español


  Buen día colega, probá con lo siguiente: 

     oHTTP = CREATEOBJECT("Msxml2.XMLHTTP.6.0")


     * usuario y password se envían como parámetros

     oHTTP.OPEN("POST", pURL_WSDL, .F., "USUARIO", "PASSWORD")


     * usuario y password se envían convertidos a Base64.

     oHTTP.setrequestheader("Authorization", "Basic "+STRCONV("USUARIO:PASSWORD", 13))


     oHTTP.setRequestHeader("User-Agent", "EjecutandoWS")

     oHTTP.setRequestHeader("Content-Type", "text/xml;charset=utf-8")


     oHTTP.SEND(pFileRequest)


  Saludos!



diegod...@gmail.com

unread,
Jun 7, 2018, 11:40:27 AM6/7/18
to publice...@googlegroups.com

Fabuloso, Jorge

 

Mil gracias!!

lre...@avatarsoft.net

unread,
Mar 23, 2021, 12:57:19 PM3/23/21
to Comunidad de Visual Foxpro en Español
Hola,

tengo el mismo problema , me pide el usuario y la contraseña como en la imagen que adjuntas.

a pesar de seguir el ejemplo de la solción propuesta por Jorge, no me ha funcionado.

Alguna idea más!!!
Gracias por anticipado.

HernanCano

unread,
Mar 23, 2021, 2:11:43 PM3/23/21
to Comunidad de Visual Foxpro en Español
En la documentación del servicio web te dicen cómo debes enviar la autenticación.
Reply all
Reply to author
Forward
0 new messages