Call Web Service from a VC++ 6.0 Client

What you need :
Microsoft SOAP toolkit 3.0 with Microsoft XML 2.0 included.
Microsoft Visual C++ 6.0, we use it create client application.
Microsoft Visual Studio.NET, we use VC# to create web service.

VC code :
<script type=text/javascript> function ToggleSourceCodeRegion(regionNumber) { var divRegion = document.getElementById('region' + regionNumber); var divRegionBlock = document.getElementById('regionBlock' + regionNumber); if (divRegion.style.display == 'inline') { divRegion.style.display = 'none'; divRegionBlock.style.display = 'inline'; } else { divRegion.style.display = 'inline'; divRegionBlock.style.display = 'none'; } } </script>  

1#include "stdafx.h"
2#include <windows.h>
3#include <stdio.h>
4#import "msxml4.dll" 
5using namespace MSXML2;
6#import "C:/Program Files/Common Files/MSSoap/Binaries/mssoap30.dll" /
7            exclude("IStream", "IErrorInfo", "ISequentialStream", "_LARGE_INTEGER", /
8                    "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME")
9using namespace MSSOAPLib30;
10
11bool SayHello(char *UserName)
12{
13 ISoapSerializerPtr Serializer;
14 ISoapReaderPtr Reader;
15 ISoapConnectorPtr Connector;
16 // Connect to the service.
17 Connector.CreateInstance(__uuidof(HttpConnector30));
18 Connector->Property["EndPointURL"] = "http://localhost/WebServices/SayHello/SayHello.asmx";
19 Connector->Connect();
20 
21 // Begin the message.
22 Connector->Property["SoapAction"] = "http://tempuri.org/SayHelloToMe";
23 Connector->BeginMessage();
24 
25 // Create the SoapSerializer object.
26 Serializer.CreateInstance(__uuidof(SoapSerializer30));
27 
28 // Connect the serializer object to the input stream of the connector object.
29 Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
30 
31 // Build the SOAP Message.
32 
33 Serializer->StartEnvelope("", "", "");
34 Serializer->StartBody("");
35//Remember to set DefaultNamespace, or an exception will show before you.
36//Microsoft SOAP toolkit providered code has no this line !
37//it works not
38 Serializer->SoapDefaultNamespace("http://tempuri.org/");
39 Serializer->StartElement("SayHelloToMe","","","");
40 Serializer->StartElement("UserName","","","");
41 Serializer->WriteString(UserName);
42 Serializer->EndElement();
43 Serializer->EndElement();
44 Serializer->EndBody();
45 Serializer->EndEnvelope();
46 
47 // Send the message to the XML Web service.
48 Connector->EndMessage();      
49 
50 // Read the response.
51 Reader.CreateInstance(__uuidof(SoapReader30));
52 
53 // Connect the reader to the output stream of the connector object.
54 Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
55 
56 // Display the result.
57 printf("Answer: %s/n", (const char*)Reader->RpcResult->text);
58 if(Reader->GetFault() != NULL)
59  printf("Fault : %s/n", (const char *)Reader->GetFault()->text);
60 return false;
61}
62
63int main(int argc, char* argv[])
64{
65 CoInitialize(NULL);
66 SayHello("dtianx@hotmail.com");
67 CoUninitialize();
68 return 0;
69}
70


C# code :

1[WebMethod]
2string SayHelloToMe(string UserName)
3{
4        return "Hello ," + UserName;
5}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值