使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL
Posted
技术标签:
【中文标题】使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL【英文标题】:Consume a SOAP web service WSDL with complex types from Oracle 10 【发布时间】:2011-10-21 16:51:51 【问题描述】:跟进this 早在 2008 年 9 月关于“使用 Oracle PL/SQL 的 Web 服务”的帖子,我想知道是否有任何新信息?我还在 oracle.com 上找到了question,基本上问了同样的问题,但没有任何直接的答案。
我正在尝试从 Oracle PL/SQL 函数/存储过程中使用服务。该服务包含一个带有 6 个参数的方法,其中 5 个是自定义类型。例如,我能找到的所有 SOAP_API 示例都假定为简单类型的 int 或 string。
我们目前没有用于使用来自 Oracle 的 SOAP Web 服务的内部 ESB,因此我们不具备处理 XML 复杂类型的能力。我将 SOAP_API 用于简单类型(例如 here 和 here),但是一旦我们进入更复杂的类型,我们真的没有简单的选择吗?如果我认为它会起作用,我会花一些时间来解构 WSDL 并手动创建类型,但是当我不相信它无论如何都会起作用时,我会怀疑并犹豫是否要花几个小时来做这件事。也许SOAP_API 太有限了?除了 SOAP_API 和 UTL_DBWS 之外,是否还有其他选择,这似乎也非常复杂并受到类似限制?
感谢您的指导!
【问题讨论】:
甲骨文。但是,如果您指的是服务所用的语言,我不确定。在我看来,所有 WSDL 都一样。 我的意思是您将使用哪种语言使用该服务? @JohnSaunders:来自问题:“我正在尝试从 Oracle PL/SQL 函数/存储过程中使用服务。” 【参考方案1】:@McArthey,我没有任何运气让 utl_dbws 工作。当我最初开始使用soap_API时,我发现通过简单地使用utl_http并编写我自己的包来完成工作会更容易。
我可以证明可以使用复杂类型,我在开始时广泛使用了这个link。
作为最坏的情况,您可以按照文章中列出的方式进行操作,然后按照自己的方式进行操作——作为概念证明(例如手动编写 soap 调用代码:
<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>';
【讨论】:
快速浏览您提供的链接看起来很有希望,但我仍然看到很多 xsd:string 类型。就我而言,我有type="MapDescription"
之类的东西。不过,我会浏览链接,看看我能找到什么。谢谢(你的)信息。我以为我已经走到了互联网的尽头,但我很高兴这是我还没有看到的东西。以上是关于使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL的主要内容,如果未能解决你的问题,请参考以下文章