Capturar error clase curl

Post Reply
User avatar
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Capturar error clase curl

Post by leandro »

Hola buenas tardes para todos, estamos haciendo _ 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

            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, _ el error, pero no sabemos como, aquí el código:

Code: Select all | Expand

            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
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Capturar error clase curl

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
cnavarro
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Capturar error clase curl

Post by cnavarro »

Leandro, prueba

Code: Select all | Expand

      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
leandro
Posts: 1688
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: Capturar error clase curl

Post by leandro »

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) ]
Post Reply