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.729 ]

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

Variáveis, if, else e unless em Ruby

Computação Forense - Entendendo uma perícia

SDL e C - Uma dupla sensacional

Programando em Perl (parte 2)

Introdução a LUA, uma poderosa linguagem de programação

Leitura recomendada

Android NDK: Desmistificando o acesso a códigos nativos em C

Tutorial OpenGL v3.0

Compilando Templates C++

Algum humor e C++ Design Patterns (parte 1)

SDL - Ótimo para criação de jogos

  
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