使用Delphi5,是否可以调用用VB.Net开发的web服务中的函数,该函数具有一些参数并返回一个XML?如果是,那么我将使用哪些组件来调用web服务函数以及该函数将返回的XML?
发布于 2010-08-07 00:30:51
我认为web服务(SOAP)支持是在Delphi6中引入的。
升级到较新的Delphi版本肯定是最简单的方法。
如果不能,那么您需要一个实现SOAP支持的外部库。
您可以一直使用HTTP协议(本质上,SOAP web服务通过HTTP或HTTPS发送特定形式的XML ),但这需要大量的工作。
你可能很幸运地使用了RemObjects SDK:它支持SOAP in Delphi,但我不确定它是否支持Delphi5。
给RemObjects people打个电话或发一封电子邮件:他们真的很有帮助,你可能会很幸运。
--jeroen
发布于 2010-08-06 23:09:16
我们正在解决一个类似的问题。然而,我们对这个问题的解决方案可能不是您想要的。
我们有一组相当复杂的web服务,我们必须使用这些服务,并且需要一些配置和that。因此,为了不影响我们系统的Delphi端的开发(发布周期非常长),我们创建了一系列钩子,将调用转移到DLL,也是在Delphi中。
这个DLL有一个非常简单的任务,就是转发从函数调用接收到的信息,对其进行一点格式化,然后通过一个几乎是空的TCP套接字将其推送出去。
从那里,信息进入一个接口引擎,我们可以在那里玩弄必须在调用服务之前完成的映射和各种转换。实际的web服务包装和调用是在引擎本机环境(Java)中完成的。
使用套接字连接来调用引擎可以实现更简单、更轻量级的部署环境,在这种环境中,我们不必担心com/dcom或jni。
这听起来相当复杂,但事实证明它简化了很多整体。
另一种选择是在C#中开发一个COM DLL来完成web端的繁重工作,并将其连接到delphi。这也是可能的,根据您的部署环境,这可能是一个更简单的解决方案。我们选择不走这条路,因为out设置相当复杂,混合了胖客户端、各种性质的远程桌面和非常紧凑的IT结构。请求打开对单个机器的web访问并从不同的客户端获得到此服务器的内部套接字要比要求打开每个客户端到internet的内部套接字更容易。
否则,在纯Delphi 5中访问web服务并不是一件有趣的事情,所以我在这里的第一个反应是使用一个对WS更友好的平台,并尝试通过某种桥梁(COM、JNI、stdcall DLL等)来集成它们。
无论如何,我希望这对你有所帮助。
发布于 2010-08-06 23:49:56
我自己没有使用D5使用web服务的经验,但我的第一反应是获得一个用于web访问的internet组件集和一个用于处理xml的DOM库(ms,sax)。
话虽如此,您可能很难找到仍然支持D5的组件。我正在我的一个D5应用程序中使用Indy互联网组件,并且有一个特定的Indy SOAP库来使用web服务。http://www.indyproject.org/index.en.aspx
另一个可能有帮助的网络库是Francois Piette的internet Component Suite (ICS):http://www.overbyte.be/frame_index.html
至于xml处理,Delphi Developer's Guide to XML上的这个页面应该对您有所帮助:http://keith-wood.name/DelphiXML/Software/index.html
https://stackoverflow.com/questions/3424924
复制相似问题