Ответ будет действительно зависеть от вашего точного сценария. Например, если у вас есть контроль над веб-службой, вы можете предоставить конечную точку netTcpBinding
, а затем использовать ее непосредственно из vbscript.
Вот хорошая статья , в которой показано, как добиться этого шаг за шагом. В основном ваш клиентский код может выглядеть так:
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 может быть размещена в WAS в IIS 7.0+, которая позволяет использовать netTcpBinding
, или может быть размещена в качестве службы Windows, например.
Еще одна возможность, если у вас есть контроль над сервисом, - представить его как REST, который легче использовать. Вы можете выбрать JSON и XML, которые могут все еще требовать синтаксического анализа на клиенте, но, по крайней мере, это сделает вещи чище.
А если вы привязаны к SOAP, то рекомендуется использовать MSXML2.ServerXMLHTTP.6.0
, как показано в этого ответа , и создавать конверты вручную.
Элемент управления MSSOAP.soapClient
, поставляемый с Windows XP, теперь устарел, даже если он позволял достичь именно того, что вы искали, с помощью службы SOAP.