[PHP|cURL] Kurs cURL

cURL - Client URL Library - to biblioteka do uniwersalnej wymiany danych między zdalnymi serwerami poprzez różne protokoły. Oznacza to, że na danym serwerze można wysyłać i pobierać dane z/do innego. Biblioteka cURL jest prosta w użyciu, ale zarazem bardzo funkcjonalna. Używa się jej między innymi do pobierania zdalnych dokumentów czy też wysłania danych do innych serwisów. cURL obsługuje protokoły: HTTP POST, HTTP PUT, FTP oraz certyfikaty SSL. Wpis ten jest wprowadzeniem do obsługi tej biblioteki.

Pierwsze żądanie

W tym przykładzie pokażę jak może wyglądać żądanie http z użyciem cURL:

$ch = curl_init('http://www.example.com'); // Inicjujemy sesję cURL z żądaniami na adres przekazany jako argument

curl_setopt($ch, CURLOPT_HEADER, 0); // Rezygnujemy z nagłówków w zwróconej odpowiedzi
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); // Ustawiamy timeout połączenia np. 30 sekund

curl_exec($ch); // Wykonujemy żądanie

curl_close($ch); // Kończymy sesję

Jak widać na powyższym przykładzie, wysłanie prostego żądania http wymaga napisania tylko 5 krótkich linii kodu.

curl_init

Funkcja curl_init to funkcja inicjalizująca sesję cURL. Jako argument możemy, ale nie musimy przekazać do funkcji URL na jaki będzie wysłane żądanie. Adres dla żądania można także przekazać za pomocą funkcji curl_setopt, ale o tym w dalszej części. Funkcja curl_init zwraca resource - uchwyt połączenia.

curl_setopt

Funkcja curl_setopt jest jedną z ważniejszych funkcji biblioteki cURL. Służy ona do ustawiania opcji połączenia. Funkcja ta przyjmuje 3 argumenty: (resource) $ch - uchwyt połączenia, (int) $option - opcja do ustawienia (przekazywana jako stała), (mixed) $value - wartość dla ustawiane opcji. Wypiszę najczęściej używane przeze mnie opcje wraz z ich opisami. Wszystkie dostępne opcje znajdują się w dokumentacji.

  • bool CURLOPT_RETURNTRANSFER - TRUE, jeśli wynik żądania ma być zwrócony;
  • bool CURLOPT_HEADER - TRUE, jeśli do odpowiedzi mają zostać dołączone nagłówki;
  • bool CURLOPT_BINARYTRANSFER - TRUE, jeśli odpowiedź ma być zwrócona w surowym stanie;
  • bool CURLOPT_AUTOREFERER, TRUE, jeśli nagłówek Referer ma być ustawiany automatycznie;
  • string CURLOPT_URL - URL dla zapytania;
  • string CURLOPT_REFERER - ustawia nagłówek Referer;
  • string CURLOPT_USERAGENT - ustawia nagłówek User-Agent;
  • string CURLOPT_COOKIE - ustawia nagłówek Cookie;
  • string CURLOPT_ENCODING - ustawia nagłówek Accept-Encoding;
  • int CURLOPT_CONNECTTIMEOUT - ustawia timeout połączenia (w sekundach);
  • int CURLOPT_BUFFERSIZE - ustawia rozmiar bufora;
  • int CURLOPT_PORT - ustawia numer portu dla połączenia;

curl_exec

Za pomocą funkcji curl_exec wykonujemy wcześniej ustawione żądanie. Funkcja przyjmuje 1 argument (resource) - uchwyt zwrócony przez funkcję curl_init. Funkcja ta zwraca TRUE, jeśli żądanie zostanie pomyślnie wysłane lub FALSE w przypadku niepowodzenia. Uwaga! Funkcja curl_init służy także do zwracania wyniku żądania, jeśli opcja CURLOPT_RETURNTRANSFER zostanie ustawiona na TRUE.

curl_close

Funkcja curl_close kończy sesję cURL. Funkcja przyjmuje 1 argument (resource) - uchwyt połączenia.

Komentarze

Popular

[HTML] Jak wstawić obrazek?

[C++] Jak obliczyć pole i obwód trapezu?

[JavaScript|Node.js] Generowanie kodów QR w Node.js z użyciem biblioteki qrcode