Измучился весь. Нужен пример построения простого xml запроса:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ais="http://soap-server.ru/">
<soap:Header/>
<soap:Body>
<ais:Logon>
<ais:Login>login</ais:Login>
<ais:Password>pass</ais:Password>
</ais:Logon>
</soap:Body>
</soap:Envelope>
Прямой запрос выполняется:
try {
$login = 'login';
$pass = '***';
$request='
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ais="http://soap-server.ru">
<soap:Header/>
<soap:Body>
<ais:Logon>
<ais:Login>'.$login.'</ais:Login>
<ais:Password>'.$pass.'</ais:Password>
</ais:Logon>
</soap:Body>
</soap:Envelope>';
$soapClient = new SoapClient(null, array('location'=>"",'uri'=>""));
$response = $soapClient->__doRequest($request, 'https://soap-server.ru/uri', 'http://soap-server.ru/Logon',SOAP_1_2);
print_r($response);
}
catch (SoapFault $exc) {
print_r($exc->getMessage());
}
но перепробовал всевозможные способы формирования xml с помощью soap библиотеки и ничего не вышло.
Валятся ошибки:
Method Not Allowed
или если обращаться к wsdl серверу, то
SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://soap-server.ru/uri?WSDL' : failed to load external entity "http://soap-server.ru/uri?WSDL"
Варианты:
$login = 'login';
$pass = '***';
try {
$connectArr = array(
'Login'=>$login,
'Password'=>$pass
);
$connectArr2 = array(
'Logon'=>array(
'Login'=>$login,
'Password'=>$pass
)
);
$connectStd = new stdClass();
$connectStd->Login=$login;
$connectStd->Password=$pass;
$connectStd2 = new stdClass();
$connectStd2->Logon = new stdClass();
$connectStd2->Logon->Login=$login;
$connectStd2->Logon->Password=$pass;
$soapParams = array(
new SoapParam($login,"Login"),
new SoapParam($pass,"Password")
);
$soapParams2 = array(
new SoapParam(array(
new SoapParam($login,"Login"),
new SoapParam($pass,"Password")
),"Logon"),
);
// $wsdl = 'http://soap-server.ru/uri?WSDL';
// $soapClient = new SoapClient($wsdl);
// $soapClient = new SoapClient($wsdl,$connectArr);
$soapClient = new SoapClient(null, array(
'location' => "https://soap-server.ru",
'uri' => "uri",
// 'Logon'=>$connectArr
));
$response=array();
// $response['v1'] = $soapClient->__soapCall('Logon', $connectArr);
// $response['v2'] = $soapClient->__soapCall('Logon', $connectArr2);
// $response['v3'] = $soapClient->Logon($connectArr);
$response['v4'] = $soapClient->Logon($connectArr2);
print_r($response);
}
catch (SoapFault $exc) {
print_r($exc->getMessage());
}