cURL

cURL
Ilustracja
Wynik curl -O
Pierwsze wydanie1997[1]
Aktualna wersja stabilna7.86.0
(26 października 2022) [±]
Język programowaniaC
System operacyjnywieloplatformowe
Rodzajprogram komputerowy, biblioteka programistyczna
LicencjaMIT
Strona internetowa

cURLprogram komputerowy oraz sieciowa biblioteka programistyczna (libcurl), napisane w języku C, działające po stronie klienta, z interfejsami dla ponad 30 innych języków. Umożliwia wysyłanie zapytań HTTP, w tym pobieranie z serwerów stron i plików, a także wysyłanie treści formularzy. Ułatwia tworzenie aplikacji korzystających z protokołu HTTP. Biblioteka cURL posiada ogromne możliwości, jej podstawowym zastosowaniem jest tworzenie sprzęgów w złożonych systemach opartych o technologie Webowe.

cURL obsługuje protokoły DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet oraz TFTP. Wspiera także mechanizmy takie jak: certyfikaty SSL, HTTP POST, HTTP PUT, upload FTP, wysyłanie formularzy HTTP, serwery proxy, HTTP cookie, uwierzytelnianie (nazwa użytkownika oraz hasło), wznawiania transferu plików, tunelowanie proxy HTTP oraz wiele innych.

Biblioteka cURL udostępniana jest na licencji MIT.

Bindy

cURL jest dostępny dla następujących języków programowania i bibliotek: Ada95, Basic, C, C++, Ch, Cocoa, D, Dylan, Eiffel, Euphoria, Falcon, Ferite, Gambas, GTK+, Haskell, Java, Lisp, Lua, Mono, .NET, Object Pascal, OCaml, Pascal, Perl, PHP, Postgres, Python, R, Rexx, Ruby, RPG, Scheme, S-Lang, Smalltalk, SP-Forth, SPL, Tcl, Visual Basic, Visual FoxPro, Q, wxWidgets, XBLite.

Platformy

cURL jest wysoko wieloplatformowy tak więc proces jego budowania oraz zasady działania są identyczne na wielu platformach m.in. Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS oraz innych.

Zależności

cURL wykorzystuje zewnętrzne biblioteki, które wspierają jego funkcje. Możliwe jest zbudowanie libcurla bez nich, lecz wtedy będzie miał ograniczoną funkcjonalność[2].

Zależności
BibliotekaWspierana funkcja
OpenSSLTLS (https)
zlibdekompresja
OpenLDAPLDAP
PolarSSLTLS (https)
heimdaluwierzytelnianie Kerberos oraz SPNEGO
MIT Kerberosuwierzytelnianie Kerberos oraz SPNEGO
nghttp2http2
c-aresasynchroniczne żądania DNS (name resolves)
libidnkodowanie IDNA (do międzynarodowych nazw domen)
GnuTLSTLS (https)
NSSTLS (https)
yasslTLS (https)
libssh2SCP oraz SFTP
libmetalinkmetalinki

Przykład

Poniższe przykłady mają za zadanie połączyć się z adresem "http://pl.wikipedia.org/w/index.php?title=CURL&action=edit".

Przykład użycia biblioteki cURL w PHP:

<?php

$hand = curl_init();

curl_setopt($hand, CURLOPT_URL, 'http://pl.wikipedia.org/w/index.php');
curl_setopt($hand, CURLOPT_POST, 1);
curl_setopt($hand, CURLOPT_POSTFIELDS, 'title=CURL&action=edit');
curl_exec($hand);

curl_close($hand);
?>

Przykład użycia w języku C.

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://pl.wikipedia.org/w/index.php");
    curl_easy_setopt(curl, CURLOPT_POST, 1);
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "title=CURL&action=edit");

    /* Wykonujemy żądanie, res będzie przechowywał kod błędu*/
    res = curl_easy_perform(curl);
    /* Sprawdzamy błędy */
    if(res != CURLE_OK)
      fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));

    /* Zwalniamy zasoby */
    curl_easy_cleanup(curl);
  }
  return 0;
}

Przypisy

  1. Historia cURL
  2. curl - External Dependencies, curl.haxx.se [dostęp 2017-11-22].

Linki zewnętrzne

Media użyte na tej stronie

Screenshot of cURL command line interface.png
Autor: Attys, Licencja: CC BY-SA 3.0
An example of cURL's output when saving to a file. Terminal: URxvt, Shell: zsh, Font: terminus.