FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Capturar error clase curl
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM
Capturar error clase curl
Posted: Thu Sep 26, 2024 07:37 PM
Hola buenas tardes para todos, estamos haciendo algunos cambios en la app para implementar el uso de la lib curl, pero no encontramos como capturar el error en caso que se genere, me explico:

Anteriormente los hacíamos así:
Code (fw): Select all Collapse
            ohttp := CreateObject( "MSXML2.XMLHTTP" )
            ohttp:Open( "POST" , ::urlenvio ,.F.)
            oHttp:SetRequestHeader("cache-control", "no-cache")
            ohttp:SetRequestHeader("content-type", "application/json" )
            ohttp:SetRequestHeader("authorization", "Basic "+cBas64 )
            TRY
                ohttp:Send( ::cdnaJson )
                response :=  ohttp:responseText
            CATCH oError
                cError := "Error: " + cValToChar( oError:GenCode) + ;
                        " SubC: " + cValToChar( oError:GenCode) + " OSCode: " + cValToChar( oError:GenCode) + CRLF + ;
                        "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Envio de CURL: " + oError:Description 
                exito := {.f.,cError}

                return exito
            END
En la variable cError capturábamos el error y en la variable response la respuesta de la petición

Ahora que estamos usando curl, queremos capturar el error, pero no sabemos como, aquí el código:
Code (fw): Select all Collapse
            AADD(aHeader,"Authorization: Basic "+cBas64 )
            AADD(aHeader,"Content-Type: application/json")
            AADD(aHeader,"cache-control: no-cache")         

            oCurl = curl_easy_init()
            curl_easy_setopt( oCurl, HB_CURLOPT_URL, ::urlenvio )
            curl_easy_setopt( oCurl, HB_CURLOPT_DL_BUFF_SETUP )
            curl_easy_setopt( oCurl, HB_CURLOPT_SSL_VERIFYPEER, 0 )
            curl_easy_setopt( oCurl, HB_CURLOPT_POSTFIELDS, ::cdnaJson )
            curl_easy_setopt( oCurl, HB_CURLOPT_CUSTOMREQUEST , "POST")
            curl_easy_setopt( oCurl, HB_CURLOPT_HTTPHEADER, aHeader )   

            IF CURL_EASY_PERFORM( oCurl ) == 0
                response = curl_easy_dl_buff_get( oCurl )
            ENDIF

            curl_easy_cleanup( oCurl )
en la variable response logramos recuperar la respuesta de manera correcta, pero como capturamos el error en caso de hubiese? donde debemos colocar el try catch?

De antemano gracias si alguien nos puede ayudar.
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 8523
Joined: Tue Dec 20, 2005 07:36 PM
Re: Capturar error clase curl
Posted: Fri Sep 27, 2024 02:36 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Capturar error clase curl
Posted: Sat Sep 28, 2024 11:14 PM
Leandro, prueba
Code (fw): Select all Collapse
      cError  := curl_easy_perform( oCurl )
      if !Empty( cError )
         //MsgInfo( curl_easy_strerror( cError ), "Error" )
         cRet := curl_easy_strerror( cError )
      else
         cRet := curl_easy_dl_buff_get( oCurl )
      endif
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM
Re: Capturar error clase curl
Posted: Tue Oct 01, 2024 10:07 PM
Gracias amigo, parece que ese es el camino :D

Cualquier cosa vuelvo y molesto por aquí jejejejeje
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]

Continue the discussion