GRIG
Новичок
Пишу SOAP-клиента, который должен работать с некоторым давно существующим SOAP-сервисом. При этом хотеть чего-то от сервиса - это за пределами моих полномочий. Как он существует - так и надо с ним работать.
В ходе работы клиент должен сделать запрос к собственной базе данных и передать результаты на сервис.
Нужно получить что-то вроде такого:
Пробую так:
Но получается что-то не то что нужно:
Чего я сделал неправильно?
В ходе работы клиент должен сделать запрос к собственной базе данных и передать результаты на сервис.
Нужно получить что-то вроде такого:
PHP:
... какие-то объемлющие теги ...
<Answer>
<Data>
<TicketDatum>
... первая найденная строка из базы данных ...
</TicketDatum>
<TicketDatum>
... вторая найденная строка из базы данных ...
</TicketDatum>
...
</Data>
</Answer>
... еще какие-то теги и закрытие всех тегов ...
PHP:
$sql = "SELECT ... FROM ... WHERE .. ORDER BY ... "
$stmt = ociparse( $conn, $sql );
$r = ociexecute( $stmt );
$cnt = ocifetchstatement( $stmt, $results, 0, -1, OCI_FETCHSTATEMENT_BY_ROW );
$tickets = Array();
foreach( $results as $row )
{
$tmp = new TicketDatum( $row['col1'], $row['col2'], ... );
$tickets[] = new SOAPVar( $tmp, SOAP_ENC_OBJECT, NULL, NULL, "TicketDatum", NULL );
}
$tmp1 = new Data( $tickets );
$ticketData = new SOAPVar( $tmp1, SOAP_ENC_ARRAY, NULL, NULL, "Data", NULL );
$tmp2 = new Answer( $ticketData );
$answer = new SOAPVar( $tmp, SOAP_ENC_OBJECT, NULL, NULL, "Answer", NULL );
PHP:
... что-то снаружи ...
<Answer>
<Data>
<TicketDatum>
<SOAP-ENC:Struct xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
... первая запись из базы ...
</SOAP-ENC:Struct>
<SOAP-ENC:Struct xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
... вторая запись из базы ...
</SOAP-ENC:Struct>
</TicketDatum>
</Data>
</Answer>