lib cURL - Trabalhe com URLs em C

Neste artigo veremos um pouco sobre a cURL/lib_cURL, a sua instalação e um exemplo simples de seu uso.

[ Hits: 26.838 ]

Por: André em 25/01/2011 | Blog: http://127.0.0.1


Instalação



Vá até o endereço:
e baixe uma versão da cURL.

Eu baixei a 7.21.2 (curl-7.21.2.tar.gz). Se preferir, você pode baixar através do comando:

wget http://curl.haxx.se/download/curl-7.21.2.tar.gz

Após baixar vamos descompactar o pacote:

tar -vzxf curl-7.21.2.tar.gz

Após descompactar, vamos até o diretório que acaba de ser criado:

cd curl-7.21.2

Lá temos os seguintes arquivos:

ls
acinclude.m4    config.log      depcomp        m4                README
aclocal.m4      config.status   docs           MacOSX-Framework  RELEASE-NOTES
Android.mk      config.sub      include        Makefile          sample.emacs
buildconf       configure       install-sh     Makefile.am       src
CHANGES         configure.ac    lib            Makefile.in       tests
CMake           COPYING         libcurl.pc     maketgz           vc6curl.dsw
CMakeLists.txt  curl-config     libcurl.pc.in  missing
compile         curl-config.in  libtool        mkinstalldirs
config.guess    curl-style.el   ltmain.sh      packages

Como você pode ver, temos o arquivo README, é interessante que você o leia, nele você pode achar as instruções e outras informações necessárias.

Voltando à instalação, logue-se como super-usuário (root):

su root

E logo após, vamos checar se está tudo ok:

# ./configure

Após isto, mande um:

# make

E logo após um:

# make install

Pronto! Estamos prontos para começar a programar.

Mas antes, vamos ver se conseguimos fazer o programa sem fazer o uso da cURL:

gambi.c:

/*  filename:  gambi.c  */
#include <stdio.h>
#include <stdlib.h>


int main(void)
{
     printf("Baixando o arquivo... ");
     system("wget www.vivaolinux.com.br");
}

gcc gambi.c -o lixo && ./lixo

Ruim demais, não acham ?!

Vamos fazer algo direito então...

Crie um novo arquivo:

touch foo.c

Este arquivo, o 'foo.c' será onde faremos o trabalho com a cURL.

vi foo.c

Um pequeno exemplo:

#include <stdio.h>
#include <stdlib.h>
#include <curl/curl.h>
/* aqui você altera pelo diretório
de sua preferência */

#define file "/home/andre/Desktop/pagina.html"

int main() {

  char url[60];
  
  CURL *curl;
  CURLcode curl_res;
  CURLINFO info;
  long http_code;
  double c_length;  
  FILE *tmp;

  tmp=fopen(file, "w");
  if(tmp==NULL) {
    printf("Erro ao abrir o arquivo: %s\n",file);
    exit(2);
  }

  printf("Iniciando...\n");
  curl = curl_easy_init();
  printf("Entre com a url do arquivo a ser baixado:\n");
  scanf("%s",&url);
  curl_easy_setopt(curl, CURLOPT_URL, url);

  
  curl_easy_setopt(curl, CURLOPT_WRITEDATA,  tmp);

  printf("Baixando arquivo...\n");
  curl_res = curl_easy_perform(curl);
  if(curl_res==0) {
    printf("Arquivo baixado!\n");
  } else {
    printf("Houve um erro ao baixar o arquivo!\n");
    fclose(tmp);
    curl_easy_cleanup(curl);
  }

  
  printf("Fechando sessao...\n");
  fclose(tmp);
  curl_easy_cleanup(curl);

  return 0;
}

Salve o arquivo e feche-o. Após isso, compile-o com:

gcc foo.c -o foo -lcurl

E execute-o:

./foo

Ele irá lhe pedir o endereço de um site (ou página), após você fornecer, ele baixa o arquivo e salva em /home/andre/Desktop com o nome pagina.html.

É isso!

Você pode encontrar alguns códigos com a cURL em:
E um tutorial na documentação. Espero que tenham gostado, desculpem qualquer erro ou coisa do gênero.

André,
@andrezc1

[]'s

Página anterior    

Páginas do artigo
   1. Introdução
   2. Instalação
Outros artigos deste autor

Linux e Windows: Quebrando Estereótipos

A profissão: Programador

Programando em Perl (parte 1)

Trabalhando com a interface gráfica em Java

SDL e C - Uma dupla sensacional

Leitura recomendada

A duplicação do buffer de saída na chamada de sistema fork() do Linux

Tutorial OpenGL v3.0

Como funcionam os alocadores de memória do STD C?

Instalando Facebook Folly através do Conan

Estudando recursividade direta e indireta

  
Comentários
[1] Comentário enviado por andrezc em 25/01/2011 - 17:49h

Apenas uma correção. No trecho
-x-
Por exemplo:

$ GET 'www.google.com.br'

Teríamos o código fonte html da 'index' do vivaolinux:
-x-

o correto seria :

-x-
Por exemplo:

$ GET 'www.vivaolinux.com.br'

Teríamos o código fonte html da 'index' do vivaolinux:
-x-


Desculpem a falta de atenção.

[2] Comentário enviado por tiekookeit em 26/01/2011 - 09:14h

Muito bom!

[3] Comentário enviado por Lisandro em 27/01/2011 - 09:26h

Ótimo artigo. Parabéns!

[4] Comentário enviado por cesar em 18/04/2011 - 10:10h

Muito bom!


[5] Comentário enviado por montovani em 18/04/2011 - 11:14h

Parabéns realmente muito bom artigo. Me ajudou bastante.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts