Используем XML-RPC для работы с SAPE и пара слов про cookie
Интернет — 4 мая, 2008 22:30 — 1 комментарий
Теги: sape.ru, XML-RPC
Думаю все знают про биржу ссылок sape.ru. Кто-то знает что такое XML-RPC (кто не знает, прошу сюда и сюда). И лишь немногие знают, что с Сапой можно работать через XML-RPC-интерфейс.
Интерфейс подробно описан тут. Особенностью работы является необходимость получать, хранить и передавать cookie на протяжении все работы.
Этот момент у меня вызвал пару трудностей. Библиотека с которой я работаю (The Incutio XML-RPC Library for PHP) не поддерживает такую возможность. Можно, конечно, работать через cURL. Но, в силу дырявости этого модуля, он на хостинге не стоит.
Надо искать выход.
Пара слов про cookie
Все общение между браузером и сервером происходит посредством заголовков. В частности, чтобы установить cookie, сервер посылает такой заголовок (в самом просто случае):
Set-Cookie: NAME=VALUE |
Теперь браузер, получив такой заголовок, при каждом запросе к серверу будет посылать заголовок:
Cookie: NAME=VALUE |
В случае нескольких cookie, все выглядит так.
Сервер:
Set-Cookie: NAME1=VALUE1 Set-Cookie: NAME2=VALUE2 |
Браузер
Cookie: NAME1=VALUE1; NAME2=VALUE2 |
Значит нам нужно сделать 2 вещи: поймать заголовки с cookie, запомнить их и посылать в заголовках при каждом запросе.
Открываем файл IXR_Library.inc.php, находим строку 460, после var $timeout; дописываем var $cookie = array ();
var $timeout; var $cookie = array(); // Storage place for an error message var $error = false; |
Тут будем хранить cookie.
Далее нужно их поймать. Идем на 521 строку:
if (trim($line) == '') { $gettingHeaders = false; } |
Перед этим добавляем:
// check cookie if (strstr($line, 'Set-Cookie:') !== false) { $tmp = explode(': ', $line); $tmp = explode(';', $tmp[1]); $this->cookie[] = $tmp[0]; } |
Знаю, что криво, что надо через рег-экспы. Не суть:)
Далее передача cookie, строка 492, ищем $request .= «User-Agent: {$this->useragent}$r»;. После нее добавляем передачу cookie. Должно получится так:
$request .= "User-Agent: {$this->useragent}$r"; if (count($this->cookie) > 0) { $request .= "Cookie: " . implode('; ', $this->cookie) . "$r"; } $request .= "Content-length: {$length}$r$r"; |
Все. Можно работать.
Пример
Авторизуемся и получаем список площадок:
require('IXR_Library.inc.php'); // Создаем xml-rpc клиента $ljClient = new IXR_Client('www.sape.ru', '/api_xmlrpc.php'); // Посылаем запрос if (!$ljClient->query('sape.login', 'Ваш логин', md5('Ваш пароль'), true)) { echo 'Ошибка запроса ['.$ljClient->getErrorCode().'] '.$ljClient->getErrorMessage(); } else { // Получаем ответ $ljResponse = $ljClient->getResponse(); if ($ljResponse == 1) { // Посылаем еще запрос if (!$ljClient->query('sape.get_sites')) { echo 'Ошибка запроса ['.$ljClient->getErrorCode().'] '.$ljClient->getErrorMessage(); } else { // Получаем ответ $ljResponse = $ljClient->getResponse(); print_r($ljResponse); // <- тут будет массив с описание всех площадок } } else { echo 'Bad response'; } } |
Все. Успехов вам на ниве линкоторговли…
Поиск
Реклама
Новые комментарии
- → Хочу поблагодарить за класную обложку. Действительно здорово. Стильно!... 1
- → Класс! Про различия между добром и злом - согласен.... 7
- → p.s. подписался :) забавно пишешь.... 7
- → Моя любимая цитата касательно бога В 1921 году Эйнштейн получил телеграмму от... 7
- → +1 мне нравиться... 5
- → Пасиба :)... 5
- → Да, Костя, точно - не занимаемся:)))...Красиво получилось!... 5
- → Для неформального девиза сойдет :)... 5
- → по-моему жестковато =)... 5
- → Угу... 7
Свежие записи
- → Прочитал: Владимир Перемолотов — Звездолет «Иосиф Сталин» 1
- → Мы не занимаемся порнографией 5
- → Моя теория «бога». Критикуйте! 7
- → Россия — Нидерланды 3: 1 — мы в полуфинале!!! 5
- → Unsharp Mask на PHP 2
- → Призы от Майкрософт 0
- → На работу!? 6
- → Download Day 2008 0
- → Пасхальное яйцо от разработчиков форума SimpleMachines 0
- → Пластилиновый мультик про Кировскую Область 0
Друзья
Интернет - июля 2, 2008 21:56 - Комментариев: 5
Мы не занимаемся порнографией
Еще в рубрике Интернет
- Unsharp Mask на PHP
- Призы от Майкрософт
- Download Day 2008
- Пасхальное яйцо от разработчиков форума SimpleMachines
- Пульт управления сервером
Рукоприкладство - мая 25, 2008 15:12 - Комментариев: 3
Сдали: Пресс-база Volkswagen
Еще в рубрике Рукоприкладство
- Сдали: Кировская Городская дума
- Сдали: Маркетинговая база Volkswagen
- Сдали: Кировский молочный комбинат
МайЛайф - июля 2, 2008 20:20 - Комментариев: 7
Моя теория «бога». Критикуйте!
Еще в рубрике МайЛайф
- Россия — Нидерланды 3: 1 — мы в полуфинале!!!
- На работу!?
- Пластилиновый мультик про Кировскую Область
- Болельщикам на Евро 2008
- 5 фактов из моей жизни






Здорово а я и не знал, что можно через XML-RPC.