【问题标题】:How do I make a ColdFusion Web Service return SOAP instead of WDDX?如何让 ColdFusion Web 服务返回 SOAP 而不是 WDDX?
【发布时间】:2011-12-23 19:35:08
【问题描述】:

我创建了一个 ColdFusion Web 服务,但它返回的是 WDDX 而不是 SOAP。如何让它返回 SOAP 而不是 WDDX?

【问题讨论】:

  • 也许我需要将复杂的数据类型转换为 xml?
  • 取决于您要返回的内容。如果 XML 足够好,请使用 XML,因为它比设置多个 CFC 来获得正确的 SOAP 类型更容易。如果您可以同时控制生产者和消费者,请使用 JSON(超级简单,但可能对数字/整数/日期有意外的类型转换)。
  • 我只是服务提供者——我无法控制消费者。
  • 复杂类型的ColdFusion Web服务没有办法返回正常的XML吗?
  • 您可能希望将问题更新为“如何使 ColdFusion Web 服务返回 xml”?

标签: web-services soap coldfusion xml-serialization wddx


【解决方案1】:

<cffunction> 返回一个 XML 对象,并将“returnformat”参数设置为“plain”。

<cffunction name="GetData" returntype="xml" returnformat="plain">

【讨论】:

  • 没有。我创建了一个 Web 服务,当我调用一个方法时,它返回我期望的数据,但在 WDDX 中,而不是在 SOAP 格式的 XML 中。
  • 根据您的说明编辑了我的答案。
  • 但现在我必须将我的复杂类型重写为 xml。
【解决方案2】:

对于复杂的对象,您需要正确设置 CFC。阅读:Using ColdFusion components to define data types for web services

更新:或者,您可以使用&lt;cfxml&gt; 自己创建对象的XML 表示,然后在cffunction 中返回带有returnType="xml" 的XML 对象。

您可以查看coldbox 的XMLConverter 插件作为将内置CF 复杂类型转换为XML 的代码示例。

【讨论】:

  • 这会引发异常,因为我的返回类型很复杂。
  • 根据您的说明编辑了我的答案。
  • 再次根据您的说明编辑了我的答案。
  • 好的。但是,当 WSDL 将复杂类型显示为返回类型时,如何让方法返回格式正确的 XML?
  • 我不是 WSDL 专家,但据我所知,一旦您构建了 XML 对象,并在远程 cffunction 中使用 returnType="xml" 返回它,它应该可以工作。
【解决方案3】:

带有 access=remote 的 CFC 方法应该返回soap,而不是WDDX。我确信我已经使用这个功能多年了。我怀疑可能发生的是内容类型基于客户端提出的请求。我会下载Soap-UI 并测试http://your.server/yourCFC.cfc?wsdl 以查看SOAP-UI 是否会被WDDX 退回。如果是这样,我有点茫然,但无论如何都要在这里报告,我会进一步看看。 如果 Soap-UI 看到正确的响应,请查看它发送的标头并将它们与您发出的请求进行比较(可能通过浏览器?)

您还可以使用Fiddler 记录soap-ui 流量并将其与任何其他请求源进行比较。

上面的http请求可能完全关闭了,但检查起来相对容易,我认为它正在敲响警钟。

您可能还想检查您正在编写的函数的返回类型。为了让 CF 生成良好的 WSDL,它需要能够从您返回的 CFC 中提取元数据。

【讨论】:

  • 是的,SOAPUI 向我展示了我的 WebService 工作正常。我试图直接在浏览器中调用它。
【解决方案4】:

游戏有点晚了,但你是把它当作一个普通的 HTTP 请求而不是一个 SOAP 数据包?

例如,您是否这样做:

http://api.example.com/something.cfc?method=test&arg1=val1

而不是带有信封、标头、正文等的实际 SOAP 请求?

HTTP 请求默认返回 WDDX 或通过指定返回格式返回 JSON,而 SOAP 请求将返回您正在寻找的格式的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2021-09-11
    • 2018-10-02
    • 2012-02-26
    • 2023-04-05
    相关资源
    最近更新 更多