MSSOAP与WebService

MSSOAP是个好东西呀,用它来调用WebService真是很便利!
MSSOAP全称应当是Microsoft Soap Toolkit,2001年,已经出到2.0的版本了,但我一直没接触过,失败呀!
.NET Frameword成熟后,貌似微软已经抛弃了Soap Toolkit,官方网页上的原话是:
The Microsoft SOAP Toolkit is deprecated by the .NET Framework. The toolkit provides basic Web services capabilities for COM components and applications. SOAP Toolkit support will be retired on July 1, 2004.
但好象现在使用实际上还是很广泛,我机器上就带有这么个东西,不知是装什么时附带装上去的,最后版本应当是3.0,网上到处都有独立安装包可下载。
官方下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en

Microsoft Soap Toolkit 2.0的介绍:
提供了一整套的COM对象来处理与SOAP相关的所有数据,可以让你在不了解SOAP和XML的情况下(当然最好还是了解的啦),也可以很容易和方便的使用任何一种编程语言来编写SOAP应用。你看到的,就是一个个的COM对象(符合微软的风格,符合一般程序员的编程习惯)。
功能简介:
1.提供了客户端的组件,可以让你指定WSDL,然后轻松调用对应的Web Service。
2.提供了服务端的组件,可以让你指定WSDL、WSML和COM对象,自动为你生成Web Service。
3.还提供了底层的处理组件,可以让你操纵SOAP消息的具体创建、处理和传输的过程。

使用MSSOAPT查看.NET Web Service的SOAP信息  

2008-03-07 12:50:07|  分类: 中间件 |  标签: |字号 订阅

1- 首先将MSSoapT的端口都配置好:

Local port:9000 (也就是让MSSoapT监听本地9000端口,然后我们就可以通过这个端口来访问Web服务)

Destination:localhost (Web服务的url是http://localhost:1505/WSScore/Service.asmx

Destination Port:1505 (Web服务的url是http://localhost:1505/WSScore/Service.asmx

2- 在“调用Web服务的.NET项目”中添加Web引用时,添加url如下:

url是http://localhost:9000/WSScore/Service.asmx (因为我们要MSSoapT来监听这个9000端口,我们访问9000端口上的Web服务,它就会自动定向到1505端口,发送和返回的SOAP消息都从这个9000端口走)

3- 修改“调用Web服务的.NET项目”中的app.config文件,在<configuration>........</configuration>里面添加如下内容:

<appSettings>
    <add key="SecurityURL" value=" http://localhost:9000/WSScore/Service.asmx" />
</appSettings>
4- 搞定了。现在就可以查看到SOAP消息了。对于跨平台与Java下应用程序通信时的SOAP截取,只需要配置好MSSoapT的端口就可以了。

MSSOAP的相关资料:
Microsoft SOAP Toolkit 2.0介绍:http://www.chinaaspx.com/archive/dotnet/6331.htm
Microsoft SOAP Toolkit v2_0 常见问题解答:http://msdn2.microsoft.com/zh-cn/library/ms995780.aspx
SOAP Toolkit:http://msdn2.microsoft.com/en-us/library/aa286526.aspx

罗嗦了一些基本概念,言归正传,其实我们没必要了解太多,因为这毕竟是一个已经不被推荐的技术。我在本文中想介绍的是其提供的客户端组件,通过它来动态调用WebService,实现非常简单,而且可以用在多种环境中。

  • 要调用WebService代码,非常简单的一个WebService方法:

[WebMethod]
public string SimpleTest(string strInput)
...{
return "Hello World: " + strInput;
}

  • 在C#里调用:

string WsdlUrl = "http://localhost/WebServiceTest/Service1.asmx?wsdl";
//Type objType = Type.GetTypeFromProgID("MSOSOAP.SoapClient30");
Type objType = Type.GetTypeFromProgID("MSSOAP.SoapClient");
object obj = Activator.CreateInstance(objType);
objType.InvokeMember("MSSoapInit", BindingFlags.InvokeMethod, null, obj, new object[] ...{ WsdlUrl });
object objResult = objType.InvokeMember("SimpleTest", BindingFlags.InvokeMethod, null, obj, new object[] ...{ "C# Invoke" });
if (objResult != null) Response.Write(objResult.ToString());

  • 在ASP里调用:

SET TestClient = Server.CreateObject("MSSOAP.SoapClient")
'在ASP中运行,需要设置ServerHTTPRequest选项
TestClient.ClientProperty("ServerHTTPRequest") = True
TestClient.mssoapinit "http://localhost/WebServiceTest/Service1.asmx?wsdl"
Response.Write TestClient.SimpleTest("ASP Invode")

  • 在vbs里调用:

SET TestClient = CreateObject("MSSOAP.SOAPClient")
TestClient.mssoapinit "http://localhost/WebServiceTest/Service1.asmx?wsdl"
WScript.Echo TestClient.SimpleTest("vbs Invoke")

  • 在JS里调用:

var TestClient = new ActiveXObject("MSSOAP.SoapClient");
TestClient.mssoapinit("http://localhost/WebServiceTest/Service1.asmx?wsdl");
alert(TestClient.SimpleTest("JavaScript Invoke"));

[注]运行JS时如果报错:automation服务器不能创建对象,解决办法:IE的安全设置>“对没有标记为安全的ActiveX控件进行初始化和脚本运行”这一项设置为“启用”
[附]Javascript+xmlhttp调用Webservice的方式:http://netboy.cnblogs.com/archive/2006/02/18/333260.html

本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
原文地址:https://www.cnblogs.com/mahaisong/p/2207703.html