Для начала я новичок в мыле.
Я пытаюсь сделать мыльный звонок в службу, и мне дали рабочий образец из календаря. Что мне нужно, это сделать аналогичный вызов в PHP.
Вывод из talend выглядит следующим образом (извлечено из HTTP-запроса)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<root>
<request>
<username>a@a.com</username>
<password>md5sumlookalike</password>
<webservice>GetCust</webservice>
<refid>12343321</refid>
<message>reserv#123</message>
</request>
</root>
</soap:Body>
</soap:Envelope>
Итак, я написал немного PHP, так как он работает как язык сценариев и для того, откуда он будет вызываться. Пытаясь понять, как сделать мыльный звонок, я придумал этот бит.
<?php
// Yes I know about the diffrent port issue here. So I wgeted and stored it for use next to script
# $soapClient = new SoapClient("http://123.123.123.123:8088/services", array("trace" => true));
$soapClient = new SoapClient("wsdl", array("trace" => true));
$error = 0;
try {
$info = $soapClient->__soapCall("invoke",
array
(
new SoapParam("a@a.com", "username"),
new SoapParam("md5sumish", "password"),
new SoapParam("GetCust", "webservice"),
new SoapParam("1234321", "refid"),
new SoapParam("reserv#123", "message")
)
);
} catch (SoapFault $fault) {
$error = 1;
echo 'ERROR: '.$fault->faultcode.'-'.$fault->faultstring;
}
if ($error == 0) {
print_r($output_headers);
echo 'maybe it worked\n';
unset($soapClient);
}
?>
В итоге я вижу следующее в HTTP-запросе через wireshark. Сервер просто не знает, что с этим делать и не отвечает. Я не уверен, что / куда мне нужно идти отсюда.
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://talend.org/esb/service/job">
<SOAP-ENV:Body>
<ns1:invokeInput>a@a.com</ns1:invokeInput>
<password>md5sumish</password>
<webservice>GetCust</webservice>
<refid>1234321</refid>
<message>reserv#123</message>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Так что я должен спросить, как избавиться от ns1: invokeInput и сделать его именем пользователя. Наряду с приведением остальной части формата в строку, чтобы запрос выглядел как выходные данные из talend?