对于一个项目,我们需要从vbscript调用一些web服务。这是可行的,但它需要手动构建整个XML片段。我被.NET宠坏了所以我想做得更好。
可以选择构建COM组件并从vbscript调用它,但遗憾的是,还需要在客户端上注册COM组件,这是我们没有的选项。
我想到的另一件事是构建一个处理Web服务调用和异常事件的控制台应用程序。这里的问题是我需要将一个字符串返回到vbcode,其中一个consoleapp只能返回一个退出代码而已(仅据我所知)。由于这是一个共享场景,我无法写入文本文件,因为这会导致多用户场景中出现问题。
所以我想知道是否有任何我错过的选项并且应该考虑?或者在另一种情况下:你们会选择什么选择?为什么?
编辑:值得一提; webservice是我的,运行它的服务器也是我的。它将通过SSL和授权进行保护,以确保除了我们的客户之外没有人可以使用它。我把它设置为WCF服务,但是要构建它以便我仍然可以改变它(服务类型或绑定类型)。答案 0 :(得分:3)
答案实际上取决于您的具体情况。例如,如果您可以控制Web服务,则可以公开netTcpBinding
端点,然后直接从vbscript使用它。
这是一个nice article,它展示了如何逐步实现这一目标。基本上您的客户端代码可能如下所示:
Dim addr
addr = "service:mexAddress=""net.tcp://localhost:7891/Test/WcfService1/Service1/Mex"","
addr = addr + "address=""net.tcp://localhost:7891/Test/WcfService1/Service1/"","
addr = addr + "contract=""IWcfService1"", contractNamespace=""http://tempuri.org/"","
addr = addr + "binding=""NetTcpBinding_IWcfService1"", bindingNamespace=""http://tempuri.org/"""
Dim service1
Set service1 = GetObject(addr)
wscript.echo service1.GetData(123)
WCF服务可以在IIS 7.0+中的WAS中托管,允许使用netTcpBinding
或者作为Windows服务自托管。
如果您可以控制服务,另一种可能性是将其公开为REST,这样更容易使用。您可以选择JSON和XML,它们可能仍然需要在客户端上进行解析,但至少它会使事情更清晰。
如果您与SOAP绑定,那么推荐的方法是使用this answer中显示的MSXML2.ServerXMLHTTP.6.0
并手动构建信封。
Windows XP附带的MSSOAP.soapClient
控件现在已经过时,即使它允许使用SOAP服务实现您正在寻找的内容。