如何从C#使用ColdFusion Web服务?

Ate*_*eik 15 c# coldfusion web-services

我正在尝试使用端点的Web服务https://services.example.com/ASP_SecureWebServices.cfc?wsdl.

在文档中我有这个:

请求

<authorise>
  <site>xxx</site>
  <login>xxx</login>
  <password>xxx</password>
  <partnerid>xxx</partnerid>
  <wstype>xpt_exhibitors</wstype>
</authorise>
Run Code Online (Sandbox Code Playgroud)

经过验证的回复

<authorisation>
  <service>getAuthToken</service>
  <authorised>OK</authorised>
  <authtoken>255461</authtoken>
</authorisation>
Run Code Online (Sandbox Code Playgroud)

我之前从未使用过ColdFusion,所以我不明白如何提出请求.有人可以帮忙吗?

我添加了这样的服务引用:

截图

但我没有得到这种方法:

截图

Sha*_*son 11

你实际上直接点击了CFC,但你最后添加?wsdl实际让它返回WSDL.

此外,您想要访问的CFC中的所有方法都需要access="remote".

所以你的实际端点会更接近这个:

https://services.example.com/ASP_SecureWebServices.cfc?wsdl
Run Code Online (Sandbox Code Playgroud)

  • 您最初列出的是导致CFC的Javadocs的结果URL.它将为您提供对象上方法的友好HTML表示,添加到组件,方法或参数,数据类型等的任何提示.但它与用于Web服务的WSDL不同.如果我在本地开发,我会直接在我的网络浏览器中点击用户的CFC.所以像http://localhost/mysite/ASP_SecureWebServices.cfc这样,这会将我重定向到你上面描述的网址,要求输入CF密码.但是在该网址的末尾添加?wsdl,boom,wsdl. (2认同)
  • 您可以像任何其他Web服务一样使用它,是的.ColdFusion Web服务旨在为开发人员提供"即插即用"的功能.您可能遇到问题的地方是数据类型..NET中可用的数据类型数组可能不会在ColdFusion Web服务中表示.而且,根据Web服务的不同,它们转换为您的最终结果可能是一些较旧的,已弃用的数据类型.我应该补充一点:根据我的经验,大多数高级CF开发人员都讨厌内置的SOAP功能,因为它从我们的控件中抽象出了很多布线. (2认同)

Dav*_*ber 6

想要走出困境,但我从文档中猜到,你需要访问的方法被调用authorise.考虑到这一点,您可以按如下方式调用Web服务:

https://services.example.com/ASP_SecureWebServices.cfc?method=authorise&site=xxx&login=xxx&password=xxx&partnerid=xxx&wstype=xpt_exhibitors
Run Code Online (Sandbox Code Playgroud)

默认情况下,ColdFusion将返回一个WDDX数据包; 如果您想要JSON,请添加&returnformat=json.