#include <stdio.h>#import "c:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll" raw_interfaces_only, exclude("IStream", "ISequentialStream", "_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", "_FILETIME", "IErrorInfo")
using namespace MSSOAPLib30; //soap的dll
int main(int argc, char* argv[])
{
CoInitialize(NULL);
_variant_t result;
DISPID dispidFn=0;
HRESULT hr;
ISoapClientPtr pSoapClient;
pSoapClient=ISoapClientPtr(__uuidof(SoapClient30));
long lValue=10;
try
{
//连接soap站点
hr=pSoapClient->MSSoapInit(_bstr_t("http://192.168.0.10/SoapTest/SoapTest.WSDL"),
_bstr_t("SoapTest"),_bstr_t("GetTimeSoapPort"),_bstr_t("http://192.168.0.10/SoapTest/SoapTest.WSML"));
if(FAILED(hr))
{
printf("MSSoapInit 失败\r\n");
_com_issue_error(hr);
} LPOLESTR pServiceName = L"GetTemp"; //得到Com中的GetTemp的方法ID
hr = pSoapClient->GetIDsOfNames(IID_NULL, &pServiceName, 1,
LOCALE_SYSTEM_DEFAULT, &dispidFn);
if(FAILED(hr))
{
printf("GetIDsOfNames 失败\r\n");
}
else
{
TCHAR strData[126]={0};
VARIANTARG args[1];
args[0].vt = VT_BSTR;
// wsprintf(strData,"test");
args[0].bstrVal = _bstr_t("test"); //传的参数 既BSTR Url ,如果有多个参数 那args[]就是传的参数的数组
EXCEPINFO excepinfo={0};
//DISPPARAMS params = { args, NULL, 1, 0 };
DISPPARAMS params;
params.cArgs = 1;
params.rgvarg= args;
params.cNamedArgs=0;
VARIANT result; //返回的是BSTR *Return 即"jones"
VariantInit(&result);
UINT uArgErr=0;
//调用GetTemp的方法
hr=pSoapClient->Invoke(dispidFn, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD, ¶ms, &result, &excepinfo, NULL);
if(FAILED(hr))
{
printf("Invoke 失败\r\n");
_com_issue_error(hr);
}
else
{
params.rgvarg[0].plVal;
}
}
}
catch(_com_error& e)
{
TCHAR str[205]={0};
wsprintf(str,"%s,%s,%s,%d",e.Source(),e.Description(),
e.ErrorMessage(),e.Error());
}
CoUninitialize();
return 0;
}
using namespace MSSOAPLib30; //soap的dll
int main(int argc, char* argv[])
{
CoInitialize(NULL);
_variant_t result;
DISPID dispidFn=0;
HRESULT hr;
ISoapClientPtr pSoapClient;
pSoapClient=ISoapClientPtr(__uuidof(SoapClient30));
long lValue=10;
try
{
//连接soap站点
hr=pSoapClient->MSSoapInit(_bstr_t("http://192.168.0.10/SoapTest/SoapTest.WSDL"),
_bstr_t("SoapTest"),_bstr_t("GetTimeSoapPort"),_bstr_t("http://192.168.0.10/SoapTest/SoapTest.WSML"));
if(FAILED(hr))
{
printf("MSSoapInit 失败\r\n");
_com_issue_error(hr);
} LPOLESTR pServiceName = L"GetTemp"; //得到Com中的GetTemp的方法ID
hr = pSoapClient->GetIDsOfNames(IID_NULL, &pServiceName, 1,
LOCALE_SYSTEM_DEFAULT, &dispidFn);
if(FAILED(hr))
{
printf("GetIDsOfNames 失败\r\n");
}
else
{
TCHAR strData[126]={0};
VARIANTARG args[1];
args[0].vt = VT_BSTR;
// wsprintf(strData,"test");
args[0].bstrVal = _bstr_t("test"); //传的参数 既BSTR Url ,如果有多个参数 那args[]就是传的参数的数组
EXCEPINFO excepinfo={0};
//DISPPARAMS params = { args, NULL, 1, 0 };
DISPPARAMS params;
params.cArgs = 1;
params.rgvarg= args;
params.cNamedArgs=0;
VARIANT result; //返回的是BSTR *Return 即"jones"
VariantInit(&result);
UINT uArgErr=0;
//调用GetTemp的方法
hr=pSoapClient->Invoke(dispidFn, IID_NULL, LOCALE_SYSTEM_DEFAULT,
DISPATCH_METHOD, ¶ms, &result, &excepinfo, NULL);
if(FAILED(hr))
{
printf("Invoke 失败\r\n");
_com_issue_error(hr);
}
else
{
params.rgvarg[0].plVal;
}
}
}
catch(_com_error& e)
{
TCHAR str[205]={0};
wsprintf(str,"%s,%s,%s,%d",e.Source(),e.Description(),
e.ErrorMessage(),e.Error());
}
CoUninitialize();
return 0;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货