首先下载并安装SoapToolkit30,搭建IIS服务(baidu下吧)
建立vc控制台程序,内容如下:
把下面的192.168.120.59都替换成你的服务的ip,如果在本地搭建的改为localhost
#include <stdio.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;
void Add()
{
ISoapSerializerPtr Serializer;
ISoapReaderPtr Reader;
ISoapConnectorPtr Connector;
// Connect to the service.
Connector.CreateInstance(__uuidof(HttpConnector30));
Connector->Property["EndPointURL"] = "http://192.168.120.59/DocSample1/DocSample1.wsdl";
Connector->Connect();
// Begin the message.
//Connector->Property["SoapAction"] = "uri:AddNumbers";
Connector->Property["SoapAction"] = "http://tempuri.org/action/Sample1.AddNumbers";
Connector->BeginMessage();
// Create the SoapSerializer object.
Serializer.CreateInstance(__uuidof(SoapSerializer30));
// Connect the serializer object to the input stream of the connector object.
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
// Build the SOAP Message.
Serializer->StartEnvelope("","","");
Serializer->StartBody("");
Serializer->StartElement("AddNumbers","http://tempuri.org/message/","","");//AddNumbers是下面wsdl里的方法
Serializer->StartElement("NumberOne","","","");
Serializer->WriteString("5");//写入AddNumbers方法里的参数1
Serializer->EndElement();
Serializer->StartElement("NumberTwo","","","");
Serializer->WriteString("10");//写入AddNumbers方法里的参数2
Serializer->EndElement();
Serializer->EndElement();
Serializer->EndBody();
Serializer->EndEnvelope();
// Send the message to the XML Web service.
Connector->EndMessage();
// Read the response.
Reader.CreateInstance(__uuidof(SoapReader30));
// Connect the reader to the output stream of the connector object.
Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
// Display the result.
printf("Answer: %s\n", (const char*)Reader->RpcResult->text);//AddNumbers得到的是两个参数的加和
}
int main()
{
CoInitialize(NULL);
Add();
CoUninitialize();
return 0;
}
http://192.168.120.59/DocSample1/DocSample1.wsdl内容如下
<definitions name="DocSample1" targetNamespace="http://tempuri.org/wsdl/">
<types>
<schema targetNamespace="http://tempuri.org/type">
</schema>
</types>
<message name="Sample1.EchoString">
<part name="testString" type="xsd:string"/>
</message>
<message name="Sample1.EchoStringResponse">
<part name="Result" type="xsd:string"/></message>
<message name="Sample1.AddNumbers">
<part name="NumberOne" type="xsd:double"/>
<part name="NumberTwo" type="xsd:double"/>
</message><message name="Sample1.AddNumbersResponse">
<part name="Result" type="xsd:double"/>
</message>
<message name="Sample1.SubtractNumbers"><part name="NumberOne" type="xsd:double"/>
<part name="NumberTwo" type="xsd:double"/>
</message>
<message name="Sample1.SubtractNumbersResponse">
<part name="Result" type="xsd:double"/>
</message>
<portType name="Sample1SoapPort">
<operation name="EchoString" parameterOrder="testString">
<input message="wsdlns:Sample1.EchoString"/>
<output message="wsdlns:Sample1.EchoStringResponse"/>
</operation><operation name="AddNumbers" parameterOrder="NumberOne NumberTwo">
<input message="wsdlns:Sample1.AddNumbers"/><output message="wsdlns:Sample1.AddNumbersResponse"/>
</operation>
<operation name="SubtractNumbers" parameterOrder="NumberOne NumberTwo">
<input message="wsdlns:Sample1.SubtractNumbers"/>
<output message="wsdlns:Sample1.SubtractNumbersResponse"/>
</operation>
</portType>
<binding name="Sample1SoapBinding" type="wsdlns:Sample1SoapPort">
<stk:binding preferredEncoding="UTF-8"/>
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="EchoString"><soap:operation soapAction="http://tempuri.org/action/Sample1.EchoString"/>
<input>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="AddNumbers">
<soap:operation soapAction="http://tempuri.org/action/Sample1.AddNumbers"/><input>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
<operation name="SubtractNumbers"><soap:operation soapAction="http://tempuri.org/action/Sample1.SubtractNumbers"/>
<input>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded" namespace="http://tempuri.org/message/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="DocSample1"><port name="Sample1SoapPort" binding="wsdlns:Sample1SoapBinding">
<soap:address location="http://localhost/DocSample1/DocSample1.wsdl"/></port></service>
</definitions>
分享到:
相关推荐
\VC连接SQL Server\VC连接SQL Server\VC连接SQL Server\VC连接SQL Server
从vc连接到oracle数据库从vc连接到ora从vc连接到oracle数据库cle数据库
VC连接MYSQL数据库
>1.VC连接SQL Server数据库时,需要作哪些设置? ----------------------------------------------------- (1)初始化COM库,引入ADO库定义文件 (2)用Connection对象连接数据库 (3)利用建立好的连接,通过...
VC 连接 SQL Server,在网上搜集的一些文章。
实现了vc连接access数据库,对数据库进行了读写操作
vc连接oracle数据库,使用Oracle提供的occi 代码中将连接类封装到了dll中
VC连接Access数据库,方便易学、易用,是好例子。
易语言静态链接vc6+vc7+vc8+vc9+vc2010+连接转换器。
VC连接数据库的例子,很详细地讲解了如何连接数据库,这篇文章,特别适合初学者,看这里你无需要懂得是什么意思,尽管跟着步骤一步一步走那么你就可以连接成功!
使VC连接数据库变的更简单
vc连接access
VC连接https,ssl,ssl,VC连接https,ssl,ssl
易语言编译连接器 vc6linker vc7linker vc8linker vc9linker vc2010linker
练习VC连接数据库,详细说明,连接方式,连接原理,实际操作,多初学者十分有益 练习VC连接数据库,详细说明,连接方式,连接原理,实际操作,多初学者十分有益
易语言vc6+vc7+vc8+vc9+vc2010+连接转换器
vc++连接webservice soap协议
ESOAP工具,基于vc6平台的专注于开发嵌入式web service工具
VC 6.0连接SQL SERVER 数据库实例,测试不有任何问题
VC6.0连接器.rar VC6.0连接器.rar VC6.0连接器.rar VC6.0连接器.rar VC6.0连接器.rar VC6.0连接器.rar