PDA

Просмотр полной версии : php Soap получить на сервере login password клиента


B0Bka
08.08.2010, 21:37
Судя по описаниям в разных мануалах
клиент который подключается к серверу может использовать доп. параметры new SoapClient("адрес wsdl-файла", массив_доп.параметров);
вот пример взятый отсюда http://php.su/articles/?cat=pear&page=004


<?php
$client = new SoapClient("stockquote1.wsdl",array(
"trace" => 1,
"exceptions" => 0));
$client->getQuote("ibm");
print "<pre>\n";
print "Запрос :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
print "Ответ:\n".htmlspecialchars($client->__getLastResponse())."\n";
print "</pre>";
?>


также судя по описанию из php.net в список этих доп параметров входят login и password :

http://ru2.php.net/manual/en/soapclient.soapclient.php


$client = new SoapClient("some.wsdl", array('login' => "some_name",
'password' => "some_password"));



скажите, как я могу получить эти login и password на своем сервере? (мне нужно определить что это за юзер и отдать ему его данные) (сервер работает именно с wsdl)

-~{}~ 08.08.10 19:18:

да, чтобы было понятнее, вот пример сервера (выкинул оттуда все чтобы не напрягать)


class Api_Controller extends Controller {

const ALLOW_PRODUCTION = TRUE;

private $user;
private $password;

public function index()
{
function getF() {
}

function getC() {
}

ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer("http://xxxxdfsf.su/apix/api.wsdl?" . rand());
$server->addFunction("getF");
$server->addFunction("getC");
$server->handle();
}
}

e_gamer
08.08.2010, 22:10
Может стоит заголовки запроса посмотреть?

Добавлено через 3 минуты
Если честно - не сталкивался с подобной задачей.

B0Bka
08.08.2010, 22:37
через встроенные методы
__getLastRequest()
__getLastResponse()
можно отлаживать данные, которые уже передаются этими "расшаренными" методами, а вот что передается при создании объекта (что по идее должно быть в конструкторе) этого не видно

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

или же вообще в каждом методе логин пароль передавать - но это еще более неправильно )

з.ы. идеально бы было их передавать при создании объекта (тем более видел у некоторых такое возможно, но вот сервера не видел)

e_gamer
08.08.2010, 22:50
я имел ввиду __getLastRequestHeaders().

Как вариант - да, доп.метод.

У Вас в задаче какая-то дифференциация по логинам?