我已经创建了一个ColdFusion Web服务,但它正在返回WDDX而不是SOAP。如何让它返回SOAP而不是WDDX?
答案 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请求将以您正在寻找的格式返回数据。