После перечитывания того, что вы хотите, и поиска в документации php, вот мое решение и пара предположений, которые я сделал
Предположения
- Если я прав, вы знаете, что сам префикс SOAP не является проблемой (вы можете использовать любой префикс, если он согласован).
- Нам нужно создать обходной путь для этого конкретного приложения Iphone, которое использует парсер (xml), который в настоящее время не может быть изменен или обновлен вами
Что вы хотите?
- Вы хотели бы использовать собственный API для изменения префикса SOAP
- Вы хотите перехватить ответ SoapServer, чтобы вы могли изменить префикс SOAP до его возвращения
Решение
- В настоящее время нет собственного метода API SoapServer для изменения префикса SOAP
- Вы можете перехватить ответ SoapServer и обработать его с помощью regex или xml parser, см. Пример ниже
<?php
// Create you parse function - Regex
function SoapServerRegexParser($input)
{
// $input contains your XML Response
// Do str_replace or preg_replace
$request = preg_replace({do replace});
//return modified output to client
return $request;
}
// OR create you parse function - Regex XML Parser
function SoapServerXMLParser($input)
{
// $input contains your XML Response
// Use any xml parser that you would like
$xml = new DOMDocument();
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->loadXML($input);
//Do replacement have a looke at: DOMNode::replaceChild
//return modified output to client
return $xml->saveXML();
}
// Make php buffer all output
// Send all output to a callBack function
// Replace 'SoapServerRegexParser' with the callback function name of choice
ob_start('SoapServerRegexParser'); //buffer output and set callback function
// Create SoapServer
$server = new SoapServer('wsdlfile.wsdl');
$server->handle(); //Handle incoming request
ob_end_flush(); //Release buffer, but send through callback function first
?>
Это должно сработать, я не создал часть регулярного выражения или фактическую замену узла xlm, но я думаю, что вы можете сделать это самостоятельно