Call Web Service from a VC++ 6.0 Client

来源:互联网 发布:大数据时代txt下载 编辑:程序博客网 时间:2024/04/30 09:52

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 :
 

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;1011bool 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 not38 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}6263int 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}