Capturar error clase curl

Capturar error clase curl

Postby leandro » Thu Sep 26, 2024 7: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: Select all  Expand view  RUN

            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: Select all  Expand view  RUN

            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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Capturar error clase curl

Postby karinha » Fri Sep 27, 2024 2:36 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7874
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Capturar error clase curl

Postby cnavarro » Sat Sep 28, 2024 11:14 pm

Leandro, prueba
Code: Select all  Expand view  RUN

      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
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Capturar error clase curl

Postby leandro » 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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Adolfo and 30 guests