2

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

4

4 回答 4

1

对于复杂对象,您需要正确设置 CFC。阅读:使用 ColdFusion 组件定义 Web 服务的数据类型

更新:或者,您可以使用 自己创建对象的 XML 表示,然后使用in<cfxml>返回 XML 对象。returnType="xml"cffunction

您可以查看Coldbox的 XMLConverter Plugin 作为代码示例,用于将内置 CF 复杂类型转换为 XML。

于 2011-11-07T17:32:49.867 回答
1

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

<cffunction name="GetData" returntype="xml" returnformat="plain">
于 2011-11-07T17:33:36.627 回答
1

带有 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 中提取元数据。

于 2011-11-07T22:06:53.153 回答
0

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

例如,您是否这样做:

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

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

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

于 2018-05-02T20:33:13.950 回答