Для начала, я новичок в мыле.Как сделать этот точный вызов?
Я пытаюсь сделать призыв к сервису и получил рабочий образец, который исходит от таланта. Мне нужно сделать аналогичный вызов в PHP.
Выход из Talend выглядит следующим образом (извлекается из запроса HTTP)
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<root>
<request>
<username>[email protected]</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("[email protected]", "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 через wirehark. Сервер просто не знает, что с этим делать и не отвечает. Я не уверен, что/где мне нужно идти отсюда.
<?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>[email protected]</ns1:invokeInput>
<password>md5sumish</password>
<webservice>GetCust</webservice>
<refid>1234321</refid>
<message>reserv#123</message>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Так что я должен спросить, как избавиться от ns1: invokeInput и сделать его имя пользователя. Наряду с переносом остальной части формата в строку, чтобы запрос выглядел как результат из таланта?