Нужна помощь с настройкой PHP скрипта, работающего с API SOAP определенного сайта.

RANtleks

Новичок
Есть сайт rookee.ru. Система имеет API SOAP. Есть мой скрипт на Php с авторизацей через API(все методы, описанные в wsld файле у меня работают). Авторизация проходит корректно так как есть другие методы, описанные в некотором wsdl файле и все они у меня работают.

Есть проблема с работой с некоторыми методами. Методы данной группы предназначены для работы с большим объемом данных. Для использования данных методов необходимо послать запрос на специальный хендлер http://www.rookee.ru/api/handler.ashx с параметрами передаваемыми методомами GET или POST(оба метода работают). Как правильно послать этот запрос, используя API я не знаю. Например нужно послать параметры:
array('type' => "page",
'ticFrom' => “10”,
'priceTo' => "2.5")


Вот нужный кусок PHP кода.


PHP:
<?php 
///*** Скрипт для работы с Rookee API 
header('Content-Type: text/html; charset=utf-8'); 

// Бесконечное время работы скрипта 
set_time_limit('0');



$clientauth = new SoapClient("http://www.rookee.ru/api/authorize.asmx?WSDL", 
array('soap_version' => SOAP_1_2, 
'trace' => 1 // для работы функций __getLastResponse, __getLastRequest и т.п. 
) 
); 
$paramsauth = Array(); 
$paramsauth["login"] = "LOGIN"; 
$paramsauth["password"] = "PASSWORD"; 


$auth = $clientauth->Login($paramsauth); 
if ($auth->LoginResult) { 
// Вот здесь я не знаю, как мне отправлять запрос на хендлер http://www.rookee.ru/api/handler.ashx  с параметрами передаваемыми методом GET или POST(оба метода поддерживаются) 
); 
$client->__setCookie("ASP.NET_SessionId", $clientauth->_cookies["ASP.NET_SessionId"][0]); 

$clientauth->Logout(); 
} 


echo '<h1>finish</h1>'; 
?>
Подскажите пож-ста как нужно отсылать такой запрос и как получить результат такого запроса.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в SOAP-запросе нет хендлеров и данных, отправляемых по get или post
это уже не через soap надо делать - через curl, например

например, мы делаем получение архивов обновлений так: сначала запросом по rpc получение списка url файлов, которые надо забрать, потом обычными http-запросами забираем файлы
 

RANtleks

Новичок
Григорий, спасибо!
Проблема уже решена, тему можно закрыть.
 

Shimmy

Новичок
Спасибо автору, что сохранил секрет решения проблемы в тайне. Не дай боже враги бы увидели.
Вот мой пример запроса через cURL (мне нужен метод ListLinksWithParam от Rookee):
Код:
$myCurl = curl_init();
            curl_setopt_array($myCurl, array(
                CURLOPT_COOKIE => 'ASP.NET_SessionId=' . $clientauth->_cookies["ASP.NET_SessionId"][0],
                CURLOPT_HEADER => "Content-type: text/xml;charset=\"utf-8\"",
                CURLOPT_URL => 'http://www.rookee.ru/api/handler.ashx?type=links',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST => true,
                CURLOPT_POSTFIELDS => http_build_query(array(
                    'queryID' => 0,
                    'linkType' => array('IndexedYandex' => true), // не работает... выдает все
                ))
            ));
            $response = curl_exec($myCurl);
            curl_close($myCurl);
            print_r(gzdecode($response)); //ответ приходит в виде tsv запечатанного в gzip
P.S.: если кто сталкивался c API Rookee (+ интересует комент в коде), буду признателен за помощь - есть несколько вопросов :)
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
Shimmy, мне кажется ты путаешь сервисы, в твоем нет ничего мыльного
 

RANtleks

Новичок
Сейчас у Rookee есть мануал по API с примерами на PHP. У меня версия 2013 г., не знаю изменилось ли что то с тех пор.
 
Сверху