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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#include "stdafx.h" #import "msxml4.dll" using namespace MSXML2; #import "C:/Program Files/Common Files/MSSoap/Binaries/mssoap30.dll" \ exclude("IStream", "IErrorInfo", "ISequentialStream", \ "_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME") using namespace MSSOAPLib30; //你机器得安装SOAP Toolkit3.0 ,1.0时,用using namespace时报错 void query(char *EndPointURL,char *NameSpace,char *method,int argv_len,char* args[],char* argv[]) { ISoapSerializerPtr Serializer; ISoapReaderPtr Reader; ISoapConnectorPtr Connector; // Connect to the service Connector.CreateInstance(__uuidof(HttpConnector30)); Connector->Property["EndPointURL"] = EndPointURL;//"http://localhost/WebService1/Service1.asmx"; Connector->Connect();//和服务器连接 // Begin message Connector->Property["SoapAction"] = _bstr_t(NameSpace) + _bstr_t(method);//"http://xin.org/getIP"; Connector->BeginMessage(); Serializer.CreateInstance(__uuidof(SoapSerializer30)); // 将serializer连接到connector的输入字符串 Serializer->Init(_variant_t((IUnknown*)Connector->InputStream)); // 创建SOAP消息 Serializer->StartEnvelope("","",""); Serializer->StartBody(""); Serializer->StartElement(method,NameSpace,"","");//命名空间必须有 for(int i=0;i<argv_len;i++) { Serializer->StartElement(args[i],NameSpace,"",""); Serializer->WriteString(argv[i]); Serializer->EndElement(); } Serializer->EndElement(); Serializer->EndBody(); Serializer->EndEnvelope(); // Send the message to the web service Connector->EndMessage(); // 读取响应 Reader.CreateInstance(__uuidof(SoapReader30)); // 将reader联接到connector的输出字符串 Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), ""); printf("Answer: %s\n",(const char*) Reader->RpcResult->text); } int main(int argc, char* argv[]) { CoInitialize(NULL); char *EndPointURL="http://approve.share-su
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值