Foros Néfele 4 Harbour › Foros › Dudas › Duda con web service
Etiquetado: web service
- Este debate tiene 7 respuestas, 2 mensajes y ha sido actualizado por última vez el 1 año por Pedro Amaro. This post has been viewed 309 times
-
AutorEntradas
-
-
16-10-2023 a las 04:32 #2084juan.novedadesParticipante
Buenas noches, estamos probando el tema de web services, pero no hemos logrado hacer funcionar el ejemplo en nefele_samples, la primera duda es que en el ejemplo que viene incluido de xailer, hace la siguiente instruccion: IF :Connect( "localhost" ) ahi tenemos que agregar nuestro puerto, lo hemos probado con puerto y sin puerto y nos genera un error "12029" que obtenemos con GetLastError(), alguna idea de lo que puede ser ?
-
16-10-2023 a las 05:15 #2085juan.novedadesParticipante
una observación adicional es que usamos http no https.
-
17-10-2023 a las 00:11 #2086Pedro AmaroSuperadministrador
Puedes usar los webservice tanto en http como en https.
Publica aquí un ejemplo de lo que estas intentando conseguir a ver si podemos ayudarte.
- Esta respuesta fue modificada 1 año, 1 mes por Pedro Amaro.
-
17-10-2023 a las 00:53 #2091juan.novedadesParticipante
Muchas gracias Pedro, lo preparo y les aviso.
-
23-10-2023 a las 02:44 #2094juan.novedadesParticipante
Pedro, buenas tardes en el ejemplo mas simple que genera el Nefelewizard, agrego en el Main.Prg lo siguiente:
12345678910Class TCgi FROM XCgi// Este es nuestro Router para evitar inyección de código malicioso y aportar la máxima seguridad.// Solo se permite la llamada a los Method de oCgi aquí nombrados que a su vez llaman a Procedure, Function o Method'sMETHOD MainFunction() Inline MainPage()METHOD RestFunction() INLINE RestFunction()* METHOD OtraMas() Inline OtraMas() //Y así tantas como queramosEND CLASScon esta función basada en los samples en el mismo main.prg
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253FUNCTION RestFunctionLOCAL aData, n,mnfl_Console( "linea número 346" )WITH OBJECT oCGInfl_Console( :cRestRaw )IF !Empty( :cRestRaw )HB_JsonDecode(:cRestRaw, @aData )nfl_Console( AllTrim( Str( Len( aData ) ) ) )DO CASE // HTTP://samples.nefele.dev/n4h/factura/13.jpg/800x600CASE :Route( 1,"clientes","PATCH" ) .OR. :Route( 1,"clientes","PUT" )nfl_Console( "linea 351" )IF :nRequestMode == rmPATCH // rmPATCH NO FUNCIONA LA CONSTANTEFOR n := 1 TO Len( aData )aData[n,4] = Time()NEXTENDIF:Send( "Status: 200 OK" ):Send( "Content-type: " + GetEnv( "CONTENT_TYPE" ) ) // ojo, puede ser, por ejemplo, un pdf o un exe:Send(""):Send(HB_JsonEncode(aData))CASE :Route( 1,"cliente","POST")TRYIF :Route( 2,"RANDOM")m := HB_Random(Len( aData))n := Int( m )+1m := Transform( n, "@e 999,999")ELSEm := Time()n := Val(:Route(2))ENDIFaData[ n,4] = m:Send( "Status: 200 OK" ):Send( "Content-type: " + GetEnv( "CONTENT_TYPE" ) ) // ojo, puede ser, por ejemplo, un pdf o un exe:Send(""):Send(HB_JsonEncode({aData[n]}))CATCH:Send( "Status: 500 Internal Server Error" ):Send("")ENDOTHERWISE:Send( "Status: 400 Bad Request" ):Send("")ENDCASEELSE:Send( "Status: 500 Internal Server Error" ):Send("")ENDIFENDRETURN Nilpor otro lado en una aplicación hecha con Xailer puro al onclick de un boton pongo lo siguiente:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172METHOD Button1Click( oSender ) CLASS TForm9LOCAL hRequestLOCAL cBuffer := Space( 1024 )LOCAL aDatos, cHeaders, aData, jDataLOCAL n,aLOCAL cRead := ""aData := {{"alfredo Sanz" , "parque 52 " , "50007 zaragoza", "" },;{"Paco Pérez" , "paseo Independencia 24", "50004 zaragoza", "" },;{"Carlos Lamarte", "emilio castelar 4" , "50002 zaragoza", "" },;{"Ramón Pérez" , "Miguel servet 24" , "50002 zaragoza", "" } }FOR n=5 TO ::oMaskEdit1:ValueAAdd(aData,{"usuario Nº "+AllTrim(Str(n)),"dirección","población",""})NEXTMsgInfo("enviando")jData := HB_JsonEncode(aData)a := Seconds()WITH OBJECT TInternet()*:nPort := 44444:Create()IF :Open()// IF :Connect( "localhost" )// IF :Connect( "samples.nefele.dev" ) // "127.0.0.1" )IF :Connect( "127.0.0.1" )// IF :Connect( "localhost" )// hRequest := :OpenRequest("PUT", "/n4h/clientes" )// hRequest := :OpenRequest("PUT", "/cgi-bin/nefele_samples.exe/clientes" )hRequest := :OpenRequest("PATCH", "/cgi-bin/ejemplo1.exe/clientes" )// hRequest := :OpenRequest("POST", "/cgi-bin/nefele_samples.exe/cliente/random" )// hRequest := :OpenRequest("POST", "/cgi-bin/nefele_samples.exe/cliente/200" ):SendRequest( hRequest,"Content-Type: application/json" , jData )IF GetLastError() == 0WHILE :ReadFile( hRequest, @cBuffer, 1024 )cRead += cBuffercBuffer := Space( 1024 )END:QueryInfo(hRequest, HTTP_QUERY_RAW_HEADERS_CRLF, @cHeaders )LogDebug( "cHeaders: " + cHeaders )::oMemo1:nClrPane := clWindow::oMemo1:Value := cHeaders:CloseRequest( hRequest )ElseMsgStop( AllTrim( Str( GetLastError() ) ) )ENDIFElseMsgStop( "no conecto" )ENDIF:Close()ENDIFENDHB_JsonDecode(cRead, @aDatos )::oArrayBrowse1:aArrayData := aDatosMsgInfo( cRead + ", recuperados en "+Transform(Seconds()-a,"@e 999.99"))RETURN Nilla aplicación nefele se llama ejemplo1.exe en el puerto 8082, pero no jala, que estoy haciendo mal, necesitas mas datos de lo que hago?
Saludos cordiales Pedro.
- Esta respuesta fue modificada 1 año, 1 mes por juan.novedades.
-
25-10-2023 a las 00:42 #2099Pedro AmaroSuperadministrador
Lo pruebo y te cuento
-
23-10-2023 a las 02:48 #2096juan.novedadesParticipante
en la función RestFunction() deje algunos nfl_console() pero no se ven reflejados en el "Nefele Console" como si no llegara a esa parte del codigo.
-
23-10-2023 a las 02:50 #2097juan.novedadesParticipante
en la función del programa xailer Button1Click() en la línea 56 me pone que el error es el número 12029.
- Esta respuesta fue modificada 1 año, 1 mes por juan.novedades.
-
-
AutorEntradas
- Debes estar registrado para responder a este debate.