Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP+Begun API, Работа с веб-сервисов по протоколу SOAP 
:(
    Опции темы
ARCLite
Дата 25.11.2010, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Приветствую, Вас, жители форума, программисты PHP, и прошу помочь разобраться в одном вопросе:
У меня возник вопрос по поводу использования веб-сервиса Бегун посредством SOAP.

Сделал все как полагается: зарегался у них на сервисе, почитал встроенную документацию по API... И все же она не особо помогла.
Не могу корректно соединиться со службой и все тут. Разговаривал с ихним саппортом - лишний раз убедился, что все делаю, вроде бы как, правильно. А суть проблемы вот в чем: при попытке подключиться к  веб-сервису через SoapClient:

Код

$wsdl_path='http://userlogin:[email protected]/?definition=AdvertiserService';

$begun = new SoapClient($wsdl_path,array('version'=>SOAP_1_1));
$username = new SoapHeader('urn:service-namespace','username','userlogin');
$password = new SoapHeader('urn:service-namespace','password','userpassword');
$headers = array($username,$password);
$begun->__setSoapHeaders($headers);
$auth=$begun->__soapCall("auth",array('login'=>'userlogin','password'=>'userpassword'));

print_r($auth);


В результате выполнения этого сценария я получаю ошибку:

Код

PHP Fatal error:  Uncaught SoapFault exception: [VersionMismatch] Wrong Version in /home/arclite/begun_soap/begun.php:9
Stack trace:
#0 /home/arclite/begun_soap/begun.php(9): SoapClient->__soapCall('auth', Array)
#1 {main}
  thrown in /home/arclite/begun_soap/begun.php on line 9


При указании версии SOAP_1_2 - результат аналогичный, такой же,как если бы этот параметр и вовсе был бы опущен. При попытке аналогично соединиться с сервисом
, но уже через nuSOAP:

Код

require_once('./lib/nusoap.php');


$wsdl_url='http://userlogin:[email protected]/?definition=AdvertiserService';

$proxyhost = 'http://api-new.begun.ru';
$proxyport = 80;
$proxyusername = 'userlogin';
$proxypassword = 'userpassword';

$client = new nusoap_client($wsdl_url,'wsdl',$proxyhost, $proxyport, $proxyusername, $proxypassword);
$params = array('login'=>'userlogin','password'=>'userpassword');
$result=$client->call("auth",$params);
$prof = $client->call('getCampaignsList');
print('Profile: ');
print_r($prof);


Получаю пустой результат: инструкция print_r($prof); возвращает пустую строку. Если не указывать параметры proxy, то я получаю ошибку о том, что авторизация не пройдена.

Подскажите, плиз, где может быть собака зарыта ?
Заранее премного благодарен =) 

З.Ы.: ОС CentOS 5.4, PHP 5.2.10


Это сообщение отредактировал(а) ARCLite - 25.11.2010, 00:29
PM MAIL ICQ   Вверх
zadov
Дата 30.1.2011, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.1.2011

Репутация: нет
Всего: нет



вам уалось решить прблему ?

сам с этим сейчас столкнулся, не знаю что делать 
PM MAIL   Вверх
Dymytry
Дата 1.2.2011, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



А у меня другая проблема: при попытке выполнить любую функцию пишет "Authorization Fail".. Никто не сталкивался? 
PM MAIL   Вверх
Dymytry
Дата 3.2.2011, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



Коллеги, а кто-нибудь может написать пример правильного SOAP собщения Бегуну?
PM MAIL   Вверх
zadov
Дата 6.2.2011, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.1.2011

Репутация: нет
Всего: нет



Цитата(Dymytry @ 3.2.2011,  10:26)
Коллеги, а кто-нибудь может написать пример правильного SOAP собщения Бегуну?

у меня есть подозрение что оно никогда не работало smile или давно сломалось
PM MAIL   Вверх
ARCLite
Дата 7.2.2011, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.11.2010

Репутация: нет
Всего: нет



Приветствую всех ! Прошу простить за длительное отсутствие.
На самом деле, API там не сломалось, а весьма хорошо работает. Правда, то, как его использовать мне удалось выяснить лишь спустя пару дней плотного общения с автором этого самого API  smile  Итак, когда вы становитесь пользователем (или клиентом ?) системы Бегун, вам даются 2 пароля, один - дня http-авторизации на веб-ресурсе api.begun.ru, а второй  - для установки SOAP-сессии. 
Кстати говоря, если вы открыли несколько рекламных кампаний в Бегуне - то при авторизации надо будет указывать имя конкретной компании в методе auth третьим параметром и пароли ко всем кампаниям скорее всего будут разными.
Авторизация осуществляется следующим образом:
Код

$wsdl_path='http://api.begun.ru/?definition=AdvertiserService';
$soap_config = array(
                    'soap_version' => SOAP_1_2,
                    'encoding' => 'windows-1251',
                    'login' => 'http_login',
                    'password' => 'http_pass'
                    );


$begun = new SoapClient(urlencode($wsdl_path),$soap_config);
$r=$begun->auth('api_login','api_pass','');
var_dump($r);

PM MAIL ICQ   Вверх
Dymytry
Дата 9.2.2011, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



ARCLite, большое спасибо!

Уточните, пожалуйста!

1) вы используете api.begun.ru или api-new.begun.ru?

2) Про два пароля. Мне дали логин и пароль, с помощью которых я могу залогиниться на api-new.begun.ru вручную и посмотреть там документацию. Правильно ли я понял, что нужны еще какие-то логины-пароли для самого веб-сервиса?

3) Если вам не сложно, могли бы вы выслать само SOAP сообщение которое отсылаете? Просто я пишу не на PHP и мне бы это помогло.

4) Третьим параметром в auth должен идти логин клиента или его id, а не название кампании. Или я не прав?
PM MAIL   Вверх
zadov
Дата 16.2.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.1.2011

Репутация: нет
Всего: нет



Цитата(Dymytry @ 9.2.2011,  12:52)
ARCLite, большое спасибо!

Уточните, пожалуйста!

1) вы используете api.begun.ru или api-new.begun.ru?

2) Про два пароля. Мне дали логин и пароль, с помощью которых я могу залогиниться на api-new.begun.ru вручную и посмотреть там документацию. Правильно ли я понял, что нужны еще какие-то логины-пароли для самого веб-сервиса?

3) Если вам не сложно, могли бы вы выслать само SOAP сообщение которое отсылаете? Просто я пишу не на PHP и мне бы это помогло.

4) Третьим параметром в auth должен идти логин клиента или его id, а не название кампании. Или я не прав?

я думаю что этот пример кода ответит на ваши вопросы:

Код

<?php
$wsdl = 'https://api-new.begun.ru/?definition=AdvertiserService';

$options = array(
  "trace"  => true,
  "soap_version" => SOAP_1_2,
  "connection_timeout"    => 30,
  'login' => "API_NEW_USER_EMAIL",
  'password' => "API_NEW_USER_PASSWORD"
);

try {
  $client = new SoapClient($wsdl, $options);
  $client->auth("BEGUN_USER_EMAIL", "BEGUN_USER_PASSWORD");
  $res = $client->getRegions();
  var_dump($res);
} catch ( SoapFault $e) {
  echo "BEGUN returns error: {$e->getMessage()}\n";
  echo "REQUEST : {$client->__getLastRequest()}\n";
  echo "RESPONSE : {$client->__getLastResponse()}\n";
} catch ( Exception $e ) {
  echo "Internal error: {$e->getMessage()}\n";
}


API_NEW_USER_EMAIL, API_NEW_USER_PASSWORD те что вы используете для доступа к https://api-new.begun.ru/?definition=AdvertiserService

BEGUN_USER_EMAIL, BEGUN_USER_PASSWORD  те что вы используете для доступа к  https://my.begun.ru/

и все заработает


p.s. спасибо ARCLite за подсказку про два пароля
PM MAIL   Вверх
Dymytry
Дата 17.2.2011, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



zadov, спасибо!

У меня теперь стала проходить авторизация, а вот cлeдующая за ней функция не проходит - говорит Authorization Fail. Что делает эта auth - создает cookie или что? 
PM MAIL   Вверх
zadov
Дата 28.2.2011, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.1.2011

Репутация: нет
Всего: нет



Цитата(Dymytry @ 17.2.2011,  16:35)
zadov, спасибо!

У меня теперь стала проходить авторизация, а вот cлeдующая за ней функция не проходит - говорит Authorization Fail. Что делает эта auth - создает cookie или что?


ну судя по симптомам как раз авторизация не проходит

второй пароль правильный ? на https://my.begun.ru/ работает ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Extensions | Следующая тема »


 




[ Время генерации скрипта: 0.1391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.