XML-RPC přes CURL, aneb jak odeslat XML soubor vzdálené službě, když nemáme allow_url_fopen
Článek patří do seriálu o knihovně CURL. Rozebírá využití CURL pro odesilání obsahu vzdáleným službám, např. pro komunikaci s webovými službami nebo XML-RPC požadavků.
Za příklad jsem si vzal zjištěni SRanku a inspiroval jsem se starším článkem Jak zjistit S-Rank pomocí XML-RPC. Pro úplné začátky práce s knihovnou CURL doporučuji článek CURL, jak načíst obsah url, když nefunguje file_get_contents.
Vše o S-Ranku bylo víceméně popsáno ve zmíněném článku, tak se pusťme rovnou do příkladu. Jde o nahrazení funkce file_get_contents, která může být kvůli allow_url_fopen zakázaná pro načítání stránek ze vzdáleného umístění.
- function getSRank($url) {
- $params = array("0", htmlspecialchars($url), 0);
- $request = xmlrpc_encode_request("getRank", $params);
- $header[] = "Content-type: text/xml";
- $header[] = "Content-length: ".strlen($request);
- $header[] = $request;
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, 'http://srank.seznam.cz');
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST' );
- $file = curl_exec($ch);
- curl_close($ch);
- $response = xmlrpc_decode($file);
- if ($response['status'] == 200) return round($response['rank']/2.55,0);
- else throw new Exception("SRank se něpodařilo získat.");
- }
A to je vše. Stejným způsobem lze komunikovat i s jinými webovými službami. CURL zde slouží pouze jako prostředník pro odeslání dat a příjmutí zpracovaného výsledku.
podobné články
| 27.06.2008 | CURL, jak načíst obsah url, když nefunguje file_get_contents | (40%) |
| 01.12.2008 | Cron a kdo vlastně spouští skript? Démon v pozadí nebo uživatel v prohlížeči? | (20%) |
| 27.11.2008 | Cron a přesměrování, aneb jak na procesy v pozadí | (20%) |
komentáře
RSS Komentáře


