Home > cURL-wrapper

cURL-wrapper

CURL-wrapper is a project mainly written in ..., based on the MIT license.

Advanced cURL wrapper http://cz.php.net/curl

cURL wrapper


.[perex] Pokročilý cURL wrapper usnadňují práci s "cURL":http://cz.php.net/curl

| Verze | 0.6 | Download | http://curl.kdyby.org/download/curl-wrapper_v0.6_php5.2.4_.tar.gz (12.3 kB) | Forum thread | http://forum.nette.org/cs/3054-curl-wrapper | Autor | Filip Procházka |* Homepage | http://curl.kdyby.org/

Instalace

Doplněk nepotřebuje žádnou instalaci, stačí jen rozbalit soubory ze složky libs z balíčku ke své aplikaci a naincludovat. V případě použítí RobotLoaderu se třídy includují automaticky.

Výchozí nastavení v config.ini

Wrapper umožňuje nastavení výchozích hodnot do vašeho configu, jako například výchozí hlavičky, složku pro cookies, cestu pro ukládání stažených souborů, nebo třeba protokol pro thread-safe ukládání [NetteIOSafeStream | doc:]

/-- code config [common] curl.cookieFile = %appDir%/temp/cookies.tmp curl.downloadFolder = %appDir%/download curl.followRedirects = True curl.fileProtocol = safe curl.userAgent = "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102814 Firefox/3.0.15" curl.headers.HTTP_ACCEPT = "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5" curl.headers.HTTP_ACCEPT_LANGUAGE = "cs,en-us;q=0.7,en;q=0.3" curl.headers.HTTP_ACCEPT_ENCODING = "gzip,deflate" curl.headers.HTTP_ACCEPT_CHARSET = "windows-1250,utf-8;q=0.7,*;q=0.7" curl.headers.HTTP_KEEP_ALIVE = 300 curl.headers.HTTP_CONNECTION = "keep-alive" --

Příklady použití

Inicializace a základní funkce

Inicializaci a jednoduchou žádost lze provést více způsoby, pokaždé však třída vrací objekt CurlResponse nebo v případě chyby vyhodí vyjímku CurlException

/--php // první způsob $test1 = new Curl; try { $odpoved = $test1->get("http://curl.kdyby.org/prevodnik.asm.zdrojak");

echo $odpoved->getBody();
var_dump($odpoved->getHeaders()); // vrací pole hlaviček

} catch ( CurlException $e ){ echo $e->getMessage(); }

// druhý způsob $test2 = new Curl("http://curl.kdyby.org/prevodnik.asm.zdrojak"); try { $odpoved = $test2->get();

echo $odpoved->getBody();
var_dump($odpoved->getHeaders()); // vrací pole hlaviček

} catch ( CurlException $e ){ echo $e->getMessage(); } --

.[caution] Pokud specifikujete URL už v konstruktoru, bude wrapper ignorovat parametr url ve všech ostatních funkcích, tento parametr se potom vynechává při jejich volání. Místo $curl->get($url, $query) se volá jen $curl->get($query) pro resetování nebo nastavení jiné url se v tomto případě používá $curl->setUrl($url)

V balíčku jsou přibalené tři jednoduché testy, první je zjednodušeně předveden v ukázce inicializace, druhý je poslání POST požadavku

/-- php $test = new Curl("http://curl.kdyby.org/dump_post.php");

try { $odpoved = $test->post(array( 'var1' => 'Lorem ipsum dot sit amet', 'var2' => 0, 'var3' => 23, 'var4' => True, 'var5' => False, ));

echo $odpoved->getBody();
var_dump($odpoved->getHeaders()); // vrací pole hlaviček

} catch ( CurlException $e ){ echo $e->getMessage(); } --

Také je možné stahovat soubory pokud nadefinujete downloadFolder čili složku pro uložení stažených souborů

/-- php $test = new Curl("http://curl.kdyby.org/prevodnik.asm.zdrojak"); $test->setDownloadFolder(realpath('./download'));

try { $odpoved = $test->download();

var_dump($odpoved->getHeaders()); // vrací pole hlaviček

// zde je možné získat cestu k souboru
echo $odpoved->getRequest()->getDownloadPath();

// nebo si rovnou otevřít stream
$fp = $odpoved->openFile();

echo fread($fp, $odpoved->getHeader('Content-Length'));

$odpoved->closeFile();

} catch ( CurlException $e ){ echo $e->getMessage(); } --

Pokud neuvedete v konstruktoru třídy url, můžete potom snadněji načíst větší množství adres, nebo poslat více požadavků na různé adresy /-- php $test1 = new Curl; try { $urls[] = "http://curl.kdyby.org/prevodnik.asm.zdrojak"; $urls[] = "http://curl.kdyby.org/dump_post.php";

foreach( $urls AS $url ){
    $odpoved = $test1->get($url);

    echo $odpoved->getBody();
    var_dump($odpoved->getHeaders()); // vrací pole hlaviček
}

} catch ( CurlException $e ){ echo $e->getMessage(); } --

Typy HTTP požadavků

Třída umožňuje poslat 6 typů HTTP požadavků

/-- php $curl = new Curl;

$url = "http://curl.kdyby.org/";

$odpoved1 = $curl->get($url, array( 'var1' => 'value1', 'var2' => 'value2' )); # pošle žádost na http://curl.kdyby.org/?var1=value1&var2=value2

$odpoved2 = $curl->post($url, $post); $odpoved3 = $curl->head($url, $query); $odpoved4 = $curl->put($url, $query); $odpoved5 = $curl->delete($url, $query);

pokud nespecifikujete jméno souboru, wrapper se ho pokusí získat z url

$url = "http://curl.kdyby.org/prevodnik.asm.zdrojak"; $odpoved6 = $curl->download($url, 'moje_jmeno_souboru.asm'); --

Není ovšem problém poslat vlastní typ http požadavku /-- php $odpoved = $curl->request('VAS_VLASTNI_TYP_ZADOSTI', $url, $query); --

Proxy

Wrapper podporuje i proxy, čili je možné přidat libovolný počet proxy serverů a wrapper je zkouší tak dlouho dokud žádost přes jednu neprojde v pořádku v nastaveném timeoutu

/-- php

poslední tři parametry jsou volitelné

$curl->addProxy('192.168.1.160', 3128 [, $username = Null [, $password = Null [, $timeout = 15]]]); --

Vlastní hlavičky

Hlavičky jde přidávat jednotlivě

/-- php $curl->setHeader('Host', '12.345.678.90'); $curl->setHeader('Some-Custom-Header', 'Some Custom Value'); --

nebo jako pole

/-- php $curl->setHeaders(array( 'Host' => '12.345.678.90', 'Some-Custom-Header' => 'Some Custom Value' )); --

Nastavení vlastních možností žádosti

Ve výchozím nastavení bude wrapper následovat přesměrování, takhle jdou zakázat /-- php $curl->setFollowRedirects(False); --

Můžete snadno nastavit referera nebo jméno prohlížeče. V třídě je pár přednastavených tzn. že nemusíte vypisovat celé jejich jméno

| FireFox3 | Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0 | GoogleBot | Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) | IE7 | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0) | Netscape | Mozilla/4.8 [en] (Windows NT 6.0; U) |* Opera | Opera/9.25 (Windows NT 6.0; U; en)

/-- php $curl->setReferer('http://google.com'); $curl->setUserAgent('FireFox3'); --

Můžete nastavit, nebo změnit všechny volby jejichž seznam je na adrese [curl_setopt | php:]. Všechny z následujících způsobů budou fungovat

/-- php $curl->setOption('AUTOREFERER', True); $curl->setOption('autoreferer', True); $curl->setOption('CURLOPT_AUTOREFERER', True); $curl->setOption('curlopt_autoreferer', True); --

Nebo je můžete nastavit pomocí pole /-- php $curl->setOptions($array); --

TODO

  • HTML parser pro CurlResponse
Previous:capybara_test