Web services 如何在ColdFusion中进行同步SOAP调用

Web services 如何在ColdFusion中进行同步SOAP调用,web-services,soap,coldfusion,Web Services,Soap,Coldfusion,在ColdFusion 9中是否可以进行同步SOAP调用?我感兴趣的特定API是由eCircle发布的,这里有一个使用PHP的示例 ColdFusion可以实现同样的功能吗?调用Web服务是同步的。你是说异步调用吗?我的其余答案是基于这个假设 现在,没有。为了支持这一点,您需要指定一个特定的CFC/函数来处理web服务响应——当它响应时——在不同的线程上。不过,如果CF对闭包的支持到来的话,可能很快就会到来(据推测是这样的) ColdFusion支持内置的SOAP web服务—web上有大量资

在ColdFusion 9中是否可以进行同步SOAP调用?我感兴趣的特定API是由eCircle发布的,这里有一个使用PHP的示例


ColdFusion可以实现同样的功能吗?

调用Web服务是同步的。

你是说异步调用吗?我的其余答案是基于这个假设

现在,没有。为了支持这一点,您需要指定一个特定的CFC/函数来处理web服务响应——当它响应时——在不同的线程上。不过,如果CF对闭包的支持到来的话,可能很快就会到来(据推测是这样的)

ColdFusion支持内置的SOAP web服务—web上有大量资源

您还可以研究使用事件网关进行异步处理,或者确实可以要求SOAP提供程序接受您的请求,然后将响应以单独的请求发送到您为其定义的另一个web服务。这会给人一种异步调用的错觉,但事实上,您只是在启动一个响应,然后在其他地方等待响应。这一点都不理想,因为这意味着您必须匹配可能会变得混乱的请求和响应

希望有帮助

从到CFScript的快速端口

   ...
   client = createObject('webservice','http://webservices.ecircle-ag.com/soap/ecm.wsdl');
   ...
   // ask for the api version
   result = client.getVersion();
   // check if there was an error calling the API function?

     // exception will be thrown I guess...

   ...
   writeOutput("The Version Number is :<pre>#result.getVersionReturn#</pre>";
   ...
   // logon 
   result = client.logon(FORM.realm, FORM.username, FORM.passwd);
   // get session id
   sessionid = result.logonReturn;
   .....

   // font forget to log out later !
。。。
client=createObject('webservice','http://webservices.ecircle-ag.com/soap/ecm.wsdl');
...
//询问api版本
结果=client.getVersion();
//检查调用API函数时是否出错?
//异常将被抛出,我猜。。。
...
writeOutput(“版本号为:#result.getVersionReturn#”);
...
//登录
结果=client.logon(FORM.realm、FORM.username、FORM.passwd);
//获取会话id
sessionid=result.logonReturn;
.....
//font稍后忘记注销!

参考资料:

我迄今为止没有使用SOAP的经验,只有基于REST的服务,因此请原谅我的相对无知。根据我在问题中引用的文档,ECircle提供了同步和异步API。使用同步API需要此处描述的请求周期。我怀疑这在CF中是不可能的,至少在least并非没有使用外部Java库。谢谢,Henry,我被文档和示例的复杂性所折服。当然,在CF中它真的就这么简单!