我写了个小程序链接一个soap的服务器,#import了微软的SoapToolKit提供的COM DLL。代码如下:// testsoap.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<windows.h>
#pragma warning(disable:4192)
#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \
exclude("IStream","ISequentialStream","_LARGE_INTEGER", \
"_ULARGE_INTERGER","tagSTATSTG","_FILETIME")
using namespace MSSOAPLib;
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
ISoapConnectorPtr Connector;
Connector.CreateInstance(__uuidof(HttpConnector));
Connector->Property["EndPointURL"]="http://www.allesta.net:51110/webservices/soapx4/isuseronline.php";
Connector->Connect();
Connector->Property["SoapAction"]="uri:allesta-YahooUserPing";
Connector->BeginMessage(); ISoapSerializerPtr Serializer;
Serializer.CreateInstance(__uuidof(SoapSerializer));
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
Serializer->startEnvelope("","",""); Serializer->startBody("");
Serializer->startElement("isuseronline","uri:allesta-YahooUserPing","","m");
Serializer->startElement("username","","","");
Serializer->writeString("laghari78");
Serializer->endElement();
Serializer->endElement();
Serializer->endBody();
Serializer->endEnvelope();
Connector->EndMessage();
ISoapReaderPtr Reader;
Reader.CreateInstance(__uuidof(SoapReader));
/*Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
_bstr_t bVal;
Reader->RPCResult->get_text(bVal.GetAddress());
printf("Answer: %s\n", (const char *)_com_util::ConvertBSTRToString(bVal));*/ CoUninitialize();
return 0;
}
运行,卡在Connect()那儿,然后弹出红色的叉叉框显示:
Debug Error!
Program.....This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
//
#include "stdafx.h"
#include<iostream>
#include<windows.h>
#pragma warning(disable:4192)
#import "C:\Program Files\Common Files\MSSoap\Binaries\MSSOAP1.dll" \
exclude("IStream","ISequentialStream","_LARGE_INTEGER", \
"_ULARGE_INTERGER","tagSTATSTG","_FILETIME")
using namespace MSSOAPLib;
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
ISoapConnectorPtr Connector;
Connector.CreateInstance(__uuidof(HttpConnector));
Connector->Property["EndPointURL"]="http://www.allesta.net:51110/webservices/soapx4/isuseronline.php";
Connector->Connect();
Connector->Property["SoapAction"]="uri:allesta-YahooUserPing";
Connector->BeginMessage(); ISoapSerializerPtr Serializer;
Serializer.CreateInstance(__uuidof(SoapSerializer));
Serializer->Init(_variant_t((IUnknown*)Connector->InputStream));
Serializer->startEnvelope("","",""); Serializer->startBody("");
Serializer->startElement("isuseronline","uri:allesta-YahooUserPing","","m");
Serializer->startElement("username","","","");
Serializer->writeString("laghari78");
Serializer->endElement();
Serializer->endElement();
Serializer->endBody();
Serializer->endEnvelope();
Connector->EndMessage();
ISoapReaderPtr Reader;
Reader.CreateInstance(__uuidof(SoapReader));
/*Reader->Load(_variant_t((IUnknown*)Connector->OutputStream), "");
_bstr_t bVal;
Reader->RPCResult->get_text(bVal.GetAddress());
printf("Answer: %s\n", (const char *)_com_util::ConvertBSTRToString(bVal));*/ CoUninitialize();
return 0;
}
运行,卡在Connect()那儿,然后弹出红色的叉叉框显示:
Debug Error!
Program.....This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
我是VC2005 sp1,在xp sp3上。难道是开发环境的不同?
我又用VC2010 sp1测试了一下,一样的错误,就是红框里面的字不一样:R6010
-abort() has been called.