继2008年9月关于'从Oracle PL / SQL消费Web服务'的this帖子后,我想知道是否有任何新信息?我还在oracle.com上发现question基本上问同样的问题,但没有任何直接答案。
我正在尝试从Oracle PL / SQL函数/存储过程中使用服务。该服务包含一个包含6个参数的方法,其中5个是自定义类型。我可以为SOAP_API找到的所有示例都假设使用简单类型的int或string,例如。
我们目前没有内部ESB来从Oracle使用SOAP Web服务,因此我们处理XML复杂类型的能力是不存在的。我将SOAP_API用于简单类型(示例here和here)但是一旦我们进入更复杂的类型,我们真的没有简单的选择吗?我会花一些时间来解构WSDL并手动创建类型,如果我认为它会起作用但是我怀疑和犹豫要花费时间做这个,当我不相信它无论如何都会工作。也许SOAP_API太有限了?除了SOAP_API和UTL_DBWS之外还有另一种选择,它看起来非常复杂并且受到类似的限制吗?
感谢任何方向!
答案 0 :(得分:1)
@McArthey,我没有运气让utl_dbws工作。虽然我最初开始使用soap_API,但我发现只需使用utl_http并编写自己的软件包来完成工作就可以更轻松地完成工作。
我可以证明可以使用复杂的类型,我在开始时广泛使用了这个link。
作为最糟糕的情况,您可以按照文章中的列出并按照自己的方式进行操作 - 作为概念验证(例如手动编写肥皂调用代码:
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<GetCityForecastByZIP xmlns="http://ws.cdyne.com/WeatherWS/">
<ZIP>' || l_zip || '</ZIP>
</GetCityForecastByZIP>
</soap12:Body>
</soap12:Envelope>';