Ir al contenido


Foto

Uso de TCurl para enviar comando a PARSE.COM


  • Por favor identifícate para responder
12 respuestas en este tema

#1 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 16 marzo 2014 - 03:31

Hola, un saludo a todos, espero alguien me ayude con el siguiente problema, que me tiene estancando y mas que es la primera vez que uso Curl.

Estoy trantando que mi aplicacion cree, modifica, consulte y borre registro en una clase que existe en el servicio PARSE.COM, en los ejemplos de la documetacion del sitio, muestran como hacer uso de API REST, y los ejemplos estan en Curl, solo he logrado hacer que se agreguen registro a una clase, con este ejemplo:



delphi
  1. procedure TForm1.btEnviarClick(Sender: TObject);
  2. begin
  3.   Curl.URL := 'https://api.parse.com/1/classes/Estudiantes';
  4.   Curl.HttpHeader.Add('X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  5.   Curl.HttpHeader.Add('X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  6.   Curl.HttpHeader.Add('Content-Type: application/json');
  7.   Curl.PostFields:= '{"Apellidos":"'      + edApellidos.Text      +
  8.                     '","Nombres":"'  + edNombre.Text  +
  9.                     '","Telefono":"' + edTelefono.Text +
  10.                     '"}';
  11.   if not Curl.Perform then ShowMessage(Curl.ErrorString);
  12. end;



ese codigo anterior me funciona perfecto, pues me agrega el registro, correctamente y me retorna el ObjectId del registro agregado, por ejemplo: xWWnyTpOux

ahora bien si deseo hacer una modificacion a ese registro con ese ObjectId (xWWnyTpOux), segun la ayuda de PARSE, debo de usar un comando PUT y el problema es que no he econtrado como enviar un comando PUT con TCurl desde delphi, al igual que otros comandos como son: GET, DELETE, etc. a continuacion los ejemplo del manual, y que no he podido convertir a delphi, si alguien me puede indicar como hacerlo, me seria de mucha ayuda y gracias por adelantado.

Estos son los comando del manual en CURL:


GET: (Retrieving objects)


delphi
  1. curl -X GET \
  2. -H "X-Parse-Application-Id: Application_ID" \
  3. -H "X-Parse-REST-API-Key: REST_API_KEY" \
  4. https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm



PUT: (Updating objects)



delphi
  1. curl -X PUT \
  2. -H "X-Parse-Application-Id: Application_ID" \
  3. -H "X-Parse-REST-API-Key: REST_API_KEY" \
  4. -H "Content-Type: application/json" \
  5. -d '{"score":73453}' \ https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm



DELETE: (Deleting objects)



delphi
  1. curl -X DELETE \
  2. -H "X-Parse-Application-Id: Application_ID" \
  3. -H "X-Parse-REST-API-Key: REST_API_KEY" \
  4. https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm



INCREMENT A FIELD (COUNTER):



delphi
  1. curl -X PUT \
  2. -H "X-Parse-Application-Id: Application_ID" \
  3. -H "X-Parse-REST-API-Key: REST_API_KEY" \
  4. -H "Content-Type: application/json" \
  5. -d '{"score":{"__op":"Increment","amount":1}}' \
  6. https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm



WORKING WITH ARRAY:



delphi
  1. curl -X PUT \
  2. -H "X-Parse-Application-Id: Application_ID" \
  3. -H "X-Parse-REST-API-Key: REST_API_KEY" \
  4. -H "Content-Type: application/json" \
  5. -d '{"skills":{"__op":"AddUnique","objects":["flying","kungfu"]}}' \
  6. https://api.parse.com/1/classes/GameScore/Ed1nuqPvcm



Gracias,

Rafael
  • 0

#2 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 18 marzo 2014 - 11:12

Hola!!!

Por favor, alguien que me de una ayuda, con la tradiccion de estos comando CURL, a Delphi TCurl, pues aun no he podido, lograr nada, con el PUT. Por favor.

Gracias de por adelantado.... si desean mas informacion, por favor decirme que....

Saludos

Rafael
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 18 marzo 2014 - 11:24

Yo uso cURL para algunas cosas (correo, ftp, webServices), pero nunca he tenido que realizar lo que tu estás haciendo, espero que alguien más pueda aportar una solución.

Lamento no poder ayudarte.

Saludos
  • 0

#4 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 18 marzo 2014 - 02:06

Gracias egostar

Oja la alguien tenga una idea de como llevar esos comando CURL a TCurl en delphi. He encontrado muy util el uso de PARSE, pues me permite tener informaciones en la nube, para ser consumidas por los usuario mobiles y de escritorio.

De todos modo gracias de nuevo, por responder.

Saludos

Liriano
  • 0

#5 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 18 marzo 2014 - 05:09

El problema es el componente, tanto egostar como yo hemos usado directamente la librería libcurl, si usar ningún componente, lo que nos permite utilizar todas las opciones de Curl. ¿Es necesario usar ese componente?
  • 0

#6 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 18 marzo 2014 - 08:34

Gracias seoane, por responderme.

Pero para nada es necesariousar el componente, si se puede hacer usando la dll directamente seria fantastico, el hecho es poder ejecutar esos comandos de PUT, GET, POST contra PARSE, si usted pudira darme una pista, idea, o ejemplo de como hacerlo con la dll, seria de mucha ayuda, en el mensaje inicial estan los ejemplos tomados de la pagina de PARSE, donde ellos usan el REST API con curl.

Gracias por todo y saludos

Rafael
  • 0

#7 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 20 marzo 2014 - 07:13

Aquí te dejo unos ejemplos con libcurl:



delphi
  1. const
  2.   BaseURL = 'https://api.parse.com/1/';
  3.  
  4. procedure Crear;
  5. var
  6.   Curl: TCURL;
  7.   Headers: pcurl_slist;
  8.   Request, Response: TStringStream;
  9.   Str: String;
  10. begin
  11.   Curl:= curl_easy_init;
  12.   if Curl <> nil then
  13.   try
  14.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE, FALSE) <> CURLE_OK) or
  15.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  16.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  17.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/')) <> CURLE_OK) or
  18.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  19.       Exit;
  20.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  21.     try
  22.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  23.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  24.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  25.         Exit;
  26.       Request:= TStringStream.Create(EmptyStr);
  27.       Response:= TStringStream.Create(EmptyStr);
  28.       try
  29.         if curl_easy_setopt(Curl, CURLOPT_READFUNCTION, @CurlReadFromStream) <> CURLE_OK then
  30.           Exit;
  31.         if curl_easy_setopt(Curl, CURLOPT_INFILE, Request) <> CURLE_OK then
  32.           Exit;
  33.         if curl_easy_setopt(Curl, CURLOPT_POST, TRUE) <> CURLE_OK then
  34.           Exit;
  35.         Request.WriteString('{"score":1337,"playerName":"Sean Plott","cheatMode":false}');
  36.         if curl_easy_setopt(Curl, CURLOPT_POSTFIELDSIZE, Request.Size) <> CURLE_OK then
  37.           Exit;
  38.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  39.           Exit;
  40.         Request.Position:= 0;
  41.         if curl_easy_perform(Curl) = CURLE_OK then
  42.         begin
  43.           Str:= Response.DataString;
  44.           Writeln(Str);
  45.         end;
  46.       finally
  47.         Request.Free;
  48.         Response.Free;
  49.       end;
  50.     finally
  51.       curl_slist_free_all(Headers);
  52.     end;
  53.   finally
  54.     curl_easy_cleanup(Curl);
  55.   end;
  56. end;
  57.  
  58.  
  59. procedure Actualizar;
  60. var
  61.   Curl: TCURL;
  62.   Headers: pcurl_slist;
  63.   Request, Response: TStringStream;
  64.   Str: String;
  65. begin
  66.   Curl:= curl_easy_init;
  67.   if Curl <> nil then
  68.   try
  69.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE,FALSE) <> CURLE_OK) or
  70.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  71.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  72.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/0MdwoR2zou')) <> CURLE_OK) or
  73.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  74.       Exit;
  75.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  76.     try
  77.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  78.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  79.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  80.         Exit;
  81.       Request:= TStringStream.Create(EmptyStr);
  82.       Response:= TStringStream.Create(EmptyStr);
  83.       try
  84.         if curl_easy_setopt(Curl, CURLOPT_READFUNCTION, @CurlReadFromStream) <> CURLE_OK then
  85.           Exit;
  86.         if curl_easy_setopt(Curl, CURLOPT_INFILE, Request) <> CURLE_OK then
  87.           Exit;
  88.         if curl_easy_setopt(Curl, CURLOPT_UPLOAD, TRUE) <> CURLE_OK then
  89.           Exit;
  90.         Request.WriteString('{"score":2000}');
  91.         if curl_easy_setopt(Curl, CURLOPT_POSTFIELDSIZE, Request.Size) <> CURLE_OK then
  92.           Exit;
  93.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  94.           Exit;
  95.         Request.Position:= 0;
  96.         if curl_easy_perform(Curl) = CURLE_OK then
  97.         begin
  98.           Str:= Response.DataString;
  99.           Writeln(Str);
  100.         end;
  101.       finally
  102.         Request.Free;
  103.         Response.Free;
  104.       end;
  105.     finally
  106.       curl_slist_free_all(Headers);
  107.     end;
  108.   finally
  109.     curl_easy_cleanup(Curl);
  110.   end;
  111. end;
  112.  
  113. procedure Obtener;
  114. var
  115.   Curl: TCURL;
  116.   Headers: pcurl_slist;
  117.   Response: TStringStream;
  118.   Str: String;
  119. begin
  120.   Curl:= curl_easy_init;
  121.   if Curl <> nil then
  122.   try
  123.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE, FALSE) <> CURLE_OK) or
  124.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  125.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  126.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/0MdwoR2zou')) <> CURLE_OK) or
  127.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  128.       Exit;
  129.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  130.     try
  131.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  132.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  133.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  134.         Exit;
  135.       Response:= TStringStream.Create(EmptyStr);
  136.       try
  137.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  138.           Exit;
  139.         if curl_easy_perform(Curl) = CURLE_OK then
  140.         begin
  141.           Str:= Response.DataString;
  142.           Writeln(Str);
  143.         end;
  144.       finally
  145.         Response.Free;
  146.       end;
  147.     finally
  148.       curl_slist_free_all(Headers);
  149.     end;
  150.   finally
  151.     curl_easy_cleanup(Curl);
  152.   end;
  153. end;



La librería Curl.pas te la dejo como adjunto. Recuerda que en el mismo directorio de tu ejecutable colocar todas las librerías de libcurl.

Saludos

  • 0

#8 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 20 marzo 2014 - 07:42

Hola Seoane

Acabo de encender la laptop y lo primero que busco es Delphiaccess a ver si habia algo por aca, y efectivamente, mil gracias. Aun no lo he probrado y sera esta noche que lo probare, pues estoy hoy fuera de la oficina, pero desde que llegue a la casa sera lo primero y le informare los resultados.

Muchas gracias de nuevo.

Rafael Liriano
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 20 marzo 2014 - 09:03

Muy interesante tu código amigo seoane es diferente a como lo he venido usando para mis requerimientos, no cabe duda, el que sabe, sabe. :)

Saludos
  • 0

#10 rasaliad

rasaliad

    Newbie

  • Miembros
  • Pip
  • 8 mensajes

Escrito 20 marzo 2014 - 06:59

Hola Seoane!!!!


Mil Gracias!!, lo que hiciste, es de maravilla, el codigo esta estupendo, bien facil y funciono Nitido... como decia es que soy nuevo en esto de curl y no sabia que se podia usar directo con la dll, pero como quiera, no iba a dar con ese codigo como lo hiciste tu.

Lo mantendre informado sobre el proceso de la aplicacion y cualquier incidencia.

Sobre el forum, tratare de aportar con lo que pueda en ayuda a otros, pues soy nuevo en el forum tambien.

De nuevo mil gracias Seoane!

Saludos

Rafael Liriano


  • 0

#11 DIEGO.CHAVEZ

DIEGO.CHAVEZ

    Member

  • Miembros
  • PipPip
  • 15 mensajes

Escrito 12 septiembre 2014 - 12:18

yo tambien tenia el mismo problema al tratar de usar el componente pero con esta libreria al parecer todo mis problemas se solucionaron gracias Seoane
  • 0

#12 sodesne

sodesne

    Newbie

  • Miembros
  • Pip
  • 1 mensajes

Escrito 27 mayo 2021 - 11:47

Aquí te dejo unos ejemplos con libcurl:

 


delphi
  1. const
  2.   BaseURL = 'https://api.parse.com/1/';
  3.  
  4. procedure Crear;
  5. var
  6.   Curl: TCURL;
  7.   Headers: pcurl_slist;
  8.   Request, Response: TStringStream;
  9.   Str: String;
  10. begin
  11.   Curl:= curl_easy_init;
  12.   if Curl <> nil then
  13.   try
  14.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE, FALSE) <> CURLE_OK) or
  15.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  16.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  17.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/')) <> CURLE_OK) or
  18.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  19.       Exit;
  20.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  21.     try
  22.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  23.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  24.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  25.         Exit;
  26.       Request:= TStringStream.Create(EmptyStr);
  27.       Response:= TStringStream.Create(EmptyStr);
  28.       try
  29.         if curl_easy_setopt(Curl, CURLOPT_READFUNCTION, @CurlReadFromStream) <> CURLE_OK then
  30.           Exit;
  31.         if curl_easy_setopt(Curl, CURLOPT_INFILE, Request) <> CURLE_OK then
  32.           Exit;
  33.         if curl_easy_setopt(Curl, CURLOPT_POST, TRUE) <> CURLE_OK then
  34.           Exit;
  35.         Request.WriteString('{"score":1337,"playerName":"Sean Plott","cheatMode":false}');
  36.         if curl_easy_setopt(Curl, CURLOPT_POSTFIELDSIZE, Request.Size) <> CURLE_OK then
  37.           Exit;
  38.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  39.           Exit;
  40.         Request.Position:= 0;
  41.         if curl_easy_perform(Curl) = CURLE_OK then
  42.         begin
  43.           Str:= Response.DataString;
  44.           Writeln(Str);
  45.         end;
  46.       finally
  47.         Request.Free;
  48.         Response.Free;
  49.       end;
  50.     finally
  51.       curl_slist_free_all(Headers);
  52.     end;
  53.   finally
  54.     curl_easy_cleanup(Curl);
  55.   end;
  56. end;
  57.  
  58.  
  59. procedure Actualizar;
  60. var
  61.   Curl: TCURL;
  62.   Headers: pcurl_slist;
  63.   Request, Response: TStringStream;
  64.   Str: String;
  65. begin
  66.   Curl:= curl_easy_init;
  67.   if Curl <> nil then
  68.   try
  69.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE,FALSE) <> CURLE_OK) or
  70.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  71.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  72.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/0MdwoR2zou')) <> CURLE_OK) or
  73.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  74.       Exit;
  75.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  76.     try
  77.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  78.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  79.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  80.         Exit;
  81.       Request:= TStringStream.Create(EmptyStr);
  82.       Response:= TStringStream.Create(EmptyStr);
  83.       try
  84.         if curl_easy_setopt(Curl, CURLOPT_READFUNCTION, @CurlReadFromStream) <> CURLE_OK then
  85.           Exit;
  86.         if curl_easy_setopt(Curl, CURLOPT_INFILE, Request) <> CURLE_OK then
  87.           Exit;
  88.         if curl_easy_setopt(Curl, CURLOPT_UPLOAD, TRUE) <> CURLE_OK then
  89.           Exit;
  90.         Request.WriteString('{"score":2000}');
  91.         if curl_easy_setopt(Curl, CURLOPT_POSTFIELDSIZE, Request.Size) <> CURLE_OK then
  92.           Exit;
  93.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  94.           Exit;
  95.         Request.Position:= 0;
  96.         if curl_easy_perform(Curl) = CURLE_OK then
  97.         begin
  98.           Str:= Response.DataString;
  99.           Writeln(Str);
  100.         end;
  101.       finally
  102.         Request.Free;
  103.         Response.Free;
  104.       end;
  105.     finally
  106.       curl_slist_free_all(Headers);
  107.     end;
  108.   finally
  109.     curl_easy_cleanup(Curl);
  110.   end;
  111. end;
  112.  
  113. procedure Obtener;
  114. var
  115.   Curl: TCURL;
  116.   Headers: pcurl_slist;
  117.   Response: TStringStream;
  118.   Str: String;
  119. begin
  120.   Curl:= curl_easy_init;
  121.   if Curl <> nil then
  122.   try
  123.     if (curl_easy_setopt(Curl, CURLOPT_VERBOSE, FALSE) <> CURLE_OK) or
  124.       (curl_easy_setopt(Curl, CURLOPT_USE_SSL, CURLUSESSL_ALL) <> CURLE_OK) or
  125.       (curl_easy_setopt(Curl, CURLOPT_SSL_VERIFYPEER, FALSE) <> CURLE_OK) or
  126.       (curl_easy_setopt(Curl, CURLOPT_URL, PAnsiChar(BaseURL + 'classes/Prueba/0MdwoR2zou')) <> CURLE_OK) or
  127.       (curl_easy_setopt(Curl, CURLOPT_WRITEFUNCTION, @CurlSaveToStream) <> CURLE_OK) then
  128.       Exit;
  129.     Headers:= curl_slist_append(nil,'X-Parse-Application-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  130.     try
  131.       Headers:= curl_slist_append(Headers,'X-Parse-REST-API-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
  132.       Headers:= curl_slist_append(Headers,'Content-Type: application/json');
  133.       if curl_easy_setopt(Curl, CURLOPT_HTTPHEADER, Headers) <> CURLE_OK then
  134.         Exit;
  135.       Response:= TStringStream.Create(EmptyStr);
  136.       try
  137.         if (curl_easy_setopt(Curl, CURLOPT_FILE, Pointer(Response)) <> CURLE_OK) then
  138.           Exit;
  139.         if curl_easy_perform(Curl) = CURLE_OK then
  140.         begin
  141.           Str:= Response.DataString;
  142.           Writeln(Str);
  143.         end;
  144.       finally
  145.         Response.Free;
  146.       end;
  147.     finally
  148.       curl_slist_free_all(Headers);
  149.     end;
  150.   finally
  151.     curl_easy_cleanup(Curl);
  152.   end;
  153. end;


La librería Curl.pas te la dejo como adjunto. Recuerda que en el mismo directorio de tu ejecutable colocar todas las librerías de libcurl.

Saludos

 

 

 

Hola, disculpen mi novatez, por más que busco no encuentro el adjunto de Curl.pas. 
¿Podrían indicarmelo, por favor? Gracias de antemano


  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 28 mayo 2021 - 11:03

Hola, disculpen mi novatez, por más que busco no encuentro el adjunto de Curl.pas. 
¿Podrían indicarmelo, por favor? Gracias de antemano

 

Hola sodesne, bienvenido a DelphiAccess

 

La puedes conseguir en éste hilo de nuestro amigo seoane aunque el archivo adjunto no está disponible (seguro se perdió en alguna de las múltiples mudanzas que hemos hecho) puedes crearlo con el código que pegó en el mensaje ("Para manejar la librería he creado esta pequeña Unit con algunas funciones básicas:")

 

También puedes ver otra opción que he subido a mi bitácora.

 

Saludos


  • 0




IP.Board spam blocked by CleanTalk.