Siguiendo con login con ws

Responder
mag071
Mensajes: 24
Registered for: 4 years 1 month
Venezuela

Siguiendo con login con ws

Mensaje por mag071 »

Saludos ;

Intentando ahora capturar el json de un api/ws y procesarlo en un login

En el ejemplo del curso de go.extend tenemos un webservice
que en el ejemplo del código fwh esta claro como manejarse en un .exe

Ahora yo agarro y cambio en el login.view
<form action="{{ Route( 'auth' ) }}" method="post" >

por

<form action="{{ Route( 'wsauth' ) }}" method="post" >

y el como es lógico me responde con el json en el navegador correctamente.

ahora la pregunta es , como hacer para capturar,tomar ese json y procesarlo,
no mostrarlo.
ejemplo poder pasarlo a un hash ejemplo
algo como hResponse :=Route( 'wsauth' )
la idea es agarrar la repuesta del json
y mandar a welcome si succes true.
y a login con su respectivo mensaje tal y como lo hace auth.

Gracias.

Avatar de Usuario
ricardo arraes
Mensajes: 87
Registered for: 4 years 1 month
Brazil

Mensaje por ricardo arraes »

¡Hola amigo!

Hay varias formas de hacer esto como quieras, puedo mostrarte dos que funcionan por experiencia ...

1- en lugar de usar un formulario, puede usar javascript para enviar una solicitud a través de jquery o ajax a la ruta y proceso de su servicio web dentro de javascript

EJEMPLO HTML (.VIEW)

Código: Seleccionar todo

<button type="button" class="btn btn-primary btn-cjemplo" id="btneje" style="background-color: firebrick;">
EJEMPLO JS:

Código: Seleccionar todo

 $(".btn-ejemplo").on('click', function(e){
   
    var objpost={var1:"A",var2:"B",var3:"C"}

    
    $.ajax({

      type: "POST",
      url: "http://localhost/ws/route",
      headers:{
        Authorization: Cookies.get("cookie")
      },
      data: objpost

    }).done(function(data,status) {

          ////////ejecuta código si la solicitud es exitosa
      }
    }).fail(function(xhr, status, error) {
      

          ////////ejecuta código si la solicitud falla
    });

  });


2- puede dirigir la solicitud a una ruta de su propia aplicación y usar libcurl para reenviar la solicitud al webservice. su objeto curl recibirá la respuesta de la solicitud de webservice y aún puede procesar dentro del método de ruta de su aplicación

HTML Form -> Application route -> webservice -> Application route

Código: Seleccionar todo

METHOD Auth( oController ) CLASS Access  

LOCAL hCurl,uValue
LOCAL hResponseCrypt:={=>}
LOCAL hData:={=>}
LOCAL cUrl := "http://localhos/ws/route"

hData:=oController:oRequest:PostAll()

  curl_global_init()

  if ! empty( hCurl := curl_easy_init() )
    
    curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )  

    curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, curl_easy_escape(hCurl,hb_jsonEncode(hData)))    

    curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )
    
    IF (nret:=curl_easy_perform( hCurl )) == 0
        uValue := curl_easy_dl_buff_get( hCurl )
    ENDIF
  ENDIF
  
  curl_global_cleanup()   

  result:=uValue  

hrespose:=hb_jsonDecode(uValue)



RETURN NIL

*el código no está completo, acabo de hacer un ejemplo simple para que entiendas la lógica de la situación, de lo contrario la publicación sería demasiado larga
The work always comes before the belief

mag071
Mensajes: 24
Registered for: 4 years 1 month
Venezuela

Mensaje por mag071 »

Gracias Ricardo ;

Use para la prueba tu opción numero 2. ya que aun no manejo jquery ni ajax . :-)
estamos esperando el curso de charly de jquery y ajax aplicados a harbourianos :-)
pero hice un pequeño ejemplo de como me lo planteastes y con curl obtengo el resultado en texto porque era una prueba.

me quedo mas o menos así y me funcionó

Código: Seleccionar todo

METHOD Apilogin( oController ) CLASS Access
	local hCurl, cBuffer := ""
	local aData := {}
	LOCAL hData:={=>}
	LOCAL hResponse:={=>}
	local cUrl:= "http://localhost/sonetos2/api/loginapi.prg" 	
	//probando una peticion get sencilla
	curl_global_init()	
	//cUrl := Route("wsauth")
       // hData:=oController:oRequest:PostAll()
	if ! empty( hCurl := curl_easy_init() )
		curl_easy_setopt( hCurl, HB_CURLOPT_URL, cUrl )
	//	curl_easy_setopt( hCurl, HB_CURLOPT_POSTFIELDS, curl_easy_escape(hCurl,hb_jsonEncode(hData)))    
		curl_easy_setopt( hCurl, HB_CURLOPT_DL_BUFF_SETUP )

		if curl_easy_perform(hCurl) == 0
			cBuffer := curl_easy_dl_buff_get( hCurl )
		endif
	endif
	curl_global_cleanup()
	
return cBuffer

Gracias Ricardo.

Avatar de Usuario
ricardo arraes
Mensajes: 87
Registered for: 4 years 1 month
Brazil

Mensaje por ricardo arraes »

¡de nada amigo!

He estado estudiando un poco de tweb últimamente y certifico que internamente usa jquery! Creo que si lo miras o el código fuente, ¡encontraré formas de usar jquery con modhabour!
The work always comes before the belief

mag071
Mensajes: 24
Registered for: 4 years 1 month
Venezuela

Mensaje por mag071 »

Gracias amigo ricardo;

Estudiaré mas tweb.

Gracias.

Responder