soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用远程soap服务器端有个com其中一接口是
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用HRESULT GetTemp([
in ]BSTR Url,[ out ,retval]BSTR * Return);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用他的实现是
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用STDMETHODIMP CGetTime::GetTemp(BSTR Url, BSTR 
* Return)
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_05soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_06
... {
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
// TODO: Add your implementation code here
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
 *Return = SysAllocString(_T("jones"));
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
return S_OK;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_10}

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用现在在客户端用soap调
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用#import 
" c:Program FilesCommon FilesMSSoapBinariesmssoap30.dll "  raw_interfaces_only, exclude( " IStream " " ISequentialStream " " _LARGE_INTEGER " " _ULARGE_INTEGER " " tagSTATSTG " " _FILETIME " " IErrorInfo " )
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用
using   namespace  MSSOAPLib30;  // soap的dll 
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用
int  main( int  argc,  char *  argv[])
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_05soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_06
... {
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 CoInitialize(NULL);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 _variant_t result;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 DISPID dispidFn
=0;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 HRESULT hr;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 ISoapClientPtr pSoapClient;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 pSoapClient
=ISoapClientPtr(__uuidof(SoapClient30));
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
long lValue=10;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
try
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31 
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  
//连接soap站点
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
  hr=pSoapClient->MSSoapInit(_bstr_t("http://192.168.100.171:8888/SoapTest.WSDL"),
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   _bstr_t(
"SoapTest"),_bstr_t("GetTimeSoapPort"),NULL);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07    
if(FAILED(hr))
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31  
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   printf(
"MSSoapInit 失败 ");
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   _com_issue_error(hr);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40  }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  LPOLESTR pServiceName 
= L"GetTemp"//得到Com中的GetTemp的方法ID
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
  hr = pSoapClient->GetIDsOfNames(IID_NULL, &pServiceName, 1,
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   LOCALE_SYSTEM_DEFAULT, 
&dispidFn);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  
if(FAILED(hr))
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31  
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   printf(
"GetIDsOfNames 失败 ");
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40  }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  
else
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31  
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31    TCHAR strData[
126]=...{0};
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31   VARIANT args[
1]=...{0};
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   args[
0].vt = VT_BSTR;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   wsprintf(strData,
"test");
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   args[
0].bstrVal = _bstr_t(strData).copy(); //传的参数 既BSTR Url ,如果有多个参数 那args[]就是传的参数的数组
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31   EXCEPINFO excepinfo
=...{0};
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31   DISPPARAMS 
params=...{0};
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   
params.cArgs = 1;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   
params.rgvarg= args;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   _variant_t result;  
//返回的是BSTR *Return 即"jones"
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
   UINT uArgErr=0;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   
//调用GetTemp的方法
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07
   hr=pSoapClient->Invoke(dispidFn, IID_NULL, LOCALE_SYSTEM_DEFAULT, 
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07     DISPATCH_METHOD, 
&params&result, &excepinfo, NULL);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   
if(FAILED(hr))
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31   
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07    printf(
"Invoke 失败 ");
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07    _com_issue_error(hr);
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40   }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   
else
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31   
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07    
params.rgvarg[0].plVal;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40   }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40  }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40 }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
catch(_com_error& e)
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31 
...{
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_30soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_31  TCHAR str[
205]=...{0};
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  wsprintf(str,
"%s,%s,%s,%d",e.Source(),e.Description(),
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07   e.ErrorMessage(),e.Error());
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07  
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_40 }

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 CoUninitialize();
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_07 
return 0;
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用_10}

soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用
soap实例 客户端(c++) + 服务器端(web + com+)-客户端调用_C  使用

好了一个简单的soap调用就完成了.