Вопрос по api sape

M5
На сайте с 03.05.2009
Offline
41
md5
1452

в продолжении этой темы /ru/forum/378776


<?php
include_once("x/lib/xmlrpc.inc");
$GLOBALS['xmlrpc_defencoding'] = "UTF8";
$GLOBALS['xmlrpc_internalencoding'] = "UTF-8";


//соединение
$client = new xmlrpc_client("/xmlrpc/", "api.sape.ru", 80);
//$client->setdebug(2);

//логин
$login="blabla";
$password="blabla";

$msg = new xmlrpcmsg("sape.login", array(
new xmlrpcval($login, "string"),
new xmlrpcval($password, "string"),
new xmlrpcval(true, "boolean")
));

$resp=$client->send($msg);
$ret = php_xmlrpc_decode($resp->value());
echo $ret;


$msg2 = new xmlrpcmsg("sape.get_balance");
$resp2 = $client->send($msg2);
$ret2 = php_xmlrpc_decode($resp2->value());

?>

тот запрос который sape.login выполняется нормально, логинится, получаем свой id

а вот уже sape.get_balance не проходит, при включенном дебаге видно, что не залогинен

как это исправить?

opaHzheBb1u
На сайте с 26.05.2006
Offline
168
#1

А куки где?

(int) sape.login((char) login, (char) password [, (boolean) md5 = false]) — авторизация в системе, необходимо вызывать в начале каждой сессии. Далее при каждом следующем запросе нужно передавать все вернувшиеся cookie.
M5
На сайте с 03.05.2009
Offline
41
md5
#2
opaHzheBb1u:
А куки где?

в коде выше куда надо вставлять куки

md5 добавил 13.10.2010 в 17:09

теперь новая проблема, как отправить запрос, чтобы посмотреть количество заявок

   

$mFilter["types"] = array(2);
$msg = new xmlrpcmsg("sape.get_messages", array(new xmlrpcval($mFilter, 'hash')));
$resp = $client->send($msg);

не прокатывает

подозрения на array(new xmlrpcval($mFilter, 'hash')), как правильно?

md5 добавил 13.10.2010 в 17:20

теперь новая проблема, как отправить запрос, чтобы посмотреть количество заявок

   

$mFilter["types"] = array(2);
$msg = new xmlrpcmsg("sape.get_messages", array(new xmlrpcval($mFilter, 'hash')));
$resp = $client->send($msg);

не прокатывает

подозрения на array(new xmlrpcval($mFilter, 'hash')), как правильно?

AlikZP
На сайте с 22.11.2009
Offline
107
#3

Подниму топик, сам не могу догнать в чем проблема.

Код

	$GLOBALS['xmlrpc_defencoding'] = "UTF8";

$GLOBALS['xmlrpc_internalencoding'] = "UTF-8";
$client = new xmlrpc_client('http://api.sape.ru/xmlrpc/');
$client->request_charset_encoding = 'UTF-8';

$login = "user";
$password = md5("password");

$query = new xmlrpcmsg('sape.login');
$query->addParam(new xmlrpcval($login, 'string'));
$query->addParam(new xmlrpcval($password, 'string'));
$query->addParam(new xmlrpcval(true, 'boolean'));
$result = $client->send($query);

if (!$result->faultCode()) {
foreach ($result->cookies() as $key => $val)
$client->setcookie($key, @$val['value'], @$val['path'], @$val['domain'], 80);

$query = new xmlrpcmsg('sape.get_balance');
$result = $client->send($query);

}

Дебаг показывает, что войти в систему удалось, ID пользователя получен.

При попытке получить баланс отдает Please Login. Форум сапы упорно молчит по этому поводу.

Кто-то знает в чем проблема кроется?

Website CMS: быстрая, удобная, недорогая! Вечная лицензия за 45$ (/ru/forum/524503) Яся - быстрый поиск фото для товаров. OpenCart/ocStore. Дополнение. (/ru/forum/665287) Грамотная верстка ваших макетов (/ru/forum/comment/8853216)
J
На сайте с 20.07.2010
Offline
72
#4

Для xmlrpc юзаю эту либу http://scripts.incutio.com/xmlrpc/

В вашем случае проблема с кукой 99%.


require "../loader.php";

$sape = sape_master::get_instance();
$sape->login();

$xmlrpc = $sape->get_xmlrpc();
$xmlrpc->query('sape.get_balance');
var_dump($xmlrpc->isError()?$xmlrpc->getErrorMessage():'OK'
, (object)$xmlrpc->getResponse());

//вывод:

string(2) "OK"
object(stdClass)#8 (1) {
["scalar"]=>
float(XXXX.4221)
}
AlikZP
На сайте с 22.11.2009
Offline
107
#5

j4ck, не понял ваш пример совершенно, но предложенную библиотеку попробовал.


require "xmlrpc.php";
$sape = new IXR_Client('http://api.sape.ru/xmlrpc/');

$sape->debug = true;

$login = "login";
$password = md5("password");

if (!$sape->query('sape.login', $login, $password, true)) {
echo 'Something went wrong - '.$sape->getErrorCode().' : '.$sape->getErrorMessage().'<br />';
} else {
print $sape->getResponse();
}

if (!$sape->query('sape.get_balance')) {
echo 'Something went wrong - '.$sape->getErrorCode().' : '.$sape->getErrorMessage().'<br />';
} else {
print $sape->getResponse();
}

та же история. Вход осуществлен, баланс проверить невозможно.

Как в этой библиотеке сохранять куки я не понял.

P.S. А может быть такое, что доступа нет к API ? Хотя не думаю, я вход выполнить не смог бы.

-------------------

Всемогущий гугл и Константин Лихачев помогли добавить куки.

Кому нужно - смотрите ссылку.

J
На сайте с 20.07.2010
Offline
72
#6

Попробуй с этой версией библиотеки.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий