如何使ColdFusion Web Service返回SOAP而不是WDDX?

时间:2011-11-07 17:22:43

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

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

4 个答案:

答案 0 :(得分:1)

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

更新或者,您可以使用<cfxml>自行创建对象的XML表示形式,然后在returnType="xml"中使用cffunction返回XML对象。< / p>

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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中提取元数据。

答案 3 :(得分:0)

游戏有点晚了,但你是将它作为普通的HTTP请求而不是像SOAP数据包一样?

例如你是这样做的:

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

而不是包含信封,标题,正文等的实际SOAP请求?

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