У меня была эта проблема, и я нашел и установил пакет «SOAP API», который Стен предлагает в Oracle-Base. Он обеспечивает некоторые хорошие возможности создания конвертов поверх UTL_HTTP.
Однако были некоторые ограничения, относящиеся к вашему вопросу. SOAP_API предполагает, что все запросы являются простыми XML, то есть только одна иерархия тегов уровня.
Я расширил пакет SOAP_API, чтобы позволить клиентскому коду произвольно вставить дополнительный тег. Таким образом, вы можете вставить подуровень, например, продолжить построение запроса и не забудьте вставить закрывающий тег.
Проблема с пространством имен была важна для проекта - разные уровни XML имели разные пространства имен.
Хорошим инструментом отладки, который я использовал, является TCP Trace от Pocket Soap.
www.pocketsoap.com/tcptrace/
Вы настраиваете его как прокси-сервер и наблюдаете объекты HTTP-запросов и ответов между кодом клиента и сервера.
Сказав все это, нам действительно нравится иметь SOAP-клиент в базе данных - у нас есть полный доступ ко всем данным и существующему коду PLSQL, мы можем легко проходить по курсорам и вызывать внешнее приложение через SOAP, когда это необходимо. Это было намного быстрее и проще, чем развертывание среднего уровня с большим количеством пользовательского кода Java или .NET. Удачи, и дайте мне знать, если вы хотите увидеть мой улучшенный код SOAP API.