Sync
Новичок
не передаются аргументы в PEAR::SOAP
Из кода думаю понятно, что делается:
<?
require_once 'SOAP/Client.php';
$wsdl = 'http://localhost/CRMWebService.asmx?wsdl';
$wsdl = new SOAP_WSDL($wsdl);
eval($wsdl->generateProxyCode());
$proxy_object = $wsdl->getProxy();
$proxy_object->auth('user', 'password');
?>
Параметры, которые передали ($login = 'user', $password='password'), просто игнорируются.
Вот как сгенерил generateProxyCode() метод auth():
function &auth($login, $password)
{
$auth =& new SOAP_Value('{http://tempuri.org/}auth', false, $v = array('login' => $login, 'password' => $password));
return $this->call('auth',
$v = array('auth' => $auth),
array('namespace' => 'http://tempuri.org/',
'soapaction' => 'http://tempuri.org/auth',
'style' => 'document',
'use' => 'literal'));
}
Сервис крутится на ASP.NET.
В чем может быть проблема?
-~{}~ 08.07.05 19:17:
Вот реализация метода на C#
[WebMethod]
public string auth (string login, string password)
{
if (login=="user" && password == "password")
{
return "yes";
}
else {
return "no";
}
}
И возвращается всегда "no"
-~{}~ 11.07.05 19:16:
Посмотрел как PEAR генерит тело запроса.
Там добавляется namespace ns4, типа так:
<SOAP-ENV:Body>
<ns4:TestMethod>
<a xsi:type="xsd:int">8</a></ns4:TestMethod>
</SOAP-ENV:Body>
и этот сервис .NET отказывается такое принимать
Вместо этого он требует такое:
<soap:Body>
<TestMethod xmlns="http://tempuri.org/" >
<a>8</a>
</TestMethod>
</soap:Body>
Пробовал в исходниках PEAR::Client руками ему прописывать - все работает нормально.
Так вопрос, кто виноват .NET или PEAR ?
Есть ли возможность управлять этими неймспейсами в PEAR или где можно почитать про это?
Из кода думаю понятно, что делается:
<?
require_once 'SOAP/Client.php';
$wsdl = 'http://localhost/CRMWebService.asmx?wsdl';
$wsdl = new SOAP_WSDL($wsdl);
eval($wsdl->generateProxyCode());
$proxy_object = $wsdl->getProxy();
$proxy_object->auth('user', 'password');
?>
Параметры, которые передали ($login = 'user', $password='password'), просто игнорируются.
Вот как сгенерил generateProxyCode() метод auth():
function &auth($login, $password)
{
$auth =& new SOAP_Value('{http://tempuri.org/}auth', false, $v = array('login' => $login, 'password' => $password));
return $this->call('auth',
$v = array('auth' => $auth),
array('namespace' => 'http://tempuri.org/',
'soapaction' => 'http://tempuri.org/auth',
'style' => 'document',
'use' => 'literal'));
}
Сервис крутится на ASP.NET.
В чем может быть проблема?
-~{}~ 08.07.05 19:17:
Вот реализация метода на C#
[WebMethod]
public string auth (string login, string password)
{
if (login=="user" && password == "password")
{
return "yes";
}
else {
return "no";
}
}
И возвращается всегда "no"

-~{}~ 11.07.05 19:16:
Посмотрел как PEAR генерит тело запроса.
Там добавляется namespace ns4, типа так:
<SOAP-ENV:Body>
<ns4:TestMethod>
<a xsi:type="xsd:int">8</a></ns4:TestMethod>
</SOAP-ENV:Body>
и этот сервис .NET отказывается такое принимать

Вместо этого он требует такое:
<soap:Body>
<TestMethod xmlns="http://tempuri.org/" >
<a>8</a>
</TestMethod>
</soap:Body>
Пробовал в исходниках PEAR::Client руками ему прописывать - все работает нормально.
Так вопрос, кто виноват .NET или PEAR ?
Есть ли возможность управлять этими неймспейсами в PEAR или где можно почитать про это?