我是一名没有冷融经验的.NET开发人员,但我需要编写cf代码来访问我设置的wcf服务。我使用WsHttpBinding在IIS 7中托管了一些WCF服务,并且我可以通过向.NET客户端添加服务引用和使用客户端类来使用这些服务。
对于.NET开发人员来说非常简单:
var addressClient = new Service.AddressClient();
addressClient.AddressDTO[] addresses = addressClient.GetAddresses();
很明显,visual studio在幕后做了很多工作来从WSDL设置这些客户端类。
我见过使用cfinvoke调用Web服务的coldfusion示例,但没有一个他们实际从WSDL设置客户端类并从Web服务响应创建它们。
那么,如何通过coldfusion完成这样的事情?
提前致谢!
答案 0 :(得分:2)
其他人是正确的,因为如果您的webservice返回简单的数据类型,cf会将它们映射到cf数据类型,一切都很简单。在某些情况下,你必须自己将复杂的数据类型转换为cf数据类型。
cflib.org有一些功能来处理这些,所以你可能想看看那里。这是一个将从Web服务返回的.net数据集转换为cf查询的函数。希望这会给你一个啊哈时刻:
http://www.cflib.org/index.cfm?event=page.udfbyid&udfid=1580
答案 1 :(得分:1)
Adobe实际上有一个非常好的参考,详细说明了从WSDL到ColdFusion代码使用Web服务所需的所有步骤:
ColdFusion: Consuming Web Services
如果您在WCF中使用WsHttpBinding
,那么您的Web服务应该像示例中的那样工作(您可以将WSDL与示例WSDL进行比较,以了解如何通过手)。
答案 2 :(得分:1)
CF的问题在于,它不能很好地处理复杂的对象。因此,只要服务只是期望字符串的索引,这样你的确定,但如果它想要一个复杂的对象嵌套它就会崩溃。
基本上你必须开始使用Axis Java对象。
我在此之前回答了一次:
Web service is expecting a DataSet object, how can I provide that via ColdFusion or in raw XML?
答案 3 :(得分:0)
您必须将端点配置为充当.NET Web服务。一旦你这样做,你可以通过在coldfusion中使用Createobject来调用它。这是一个简单的例子:
<cfscript>
wcf = CreateObject("webservice","http://ws.spreety.com/TvOnline2009.svc?wsdl");
variables.TalkShowImgHtml = wcf.GetGenreTalkShowImg("test@spreety.com");
</cfscript>
<cfoutput>#variables.TalkShowImgHtml#</cfoutput>