webservice系列教学(13)-如何调用webservice(vc4)
//////////////////////////////////////////////////////////////////////////////////////////////////
// function: CMClientDlg::Execute()
//
// parameters: No Parameters
//
// description: Pass the parameters and invoke the operation, get the result and update the
// parameters and the result value
// returns: void
//
//////////////////////////////////////////////////////////////////////////////////////////////////
void CMClientDlg::Execute()
{
USES_CONVERSION;
DisableButtons();
HTREEITEM hItem;
HTREEITEM hPort;
HTREEITEM hService;
DISPPARAMS parms;
VARIANT result;
VARIANT vTempVariable;
CComPtr<ISOAPClient> pClient = NULL;
HRESULT hr = S_OK;
BSTR bstrPort = 0;
BSTR bstrService = 0;
BSTR bstrWSDLFileName = 0;
BSTR bstrWSMLFileName = 0;
LVITEM Item;
LVITEM Item1;
int nNumParameters;
int nCounter;
int nCount;
DISPID dispidFn;
WCHAR *pstrFunctionName;
char name[1024] ;
EXCEPINFO excepinfo;
VARTYPE vt = VT_EMPTY;
hItem = m_TreeCtrl.GetSelectedItem();
dispidFn = 0;
excepinfo.wCode = 1001;
excepinfo.wReserved = 0;
excepinfo.bstrSource = 0;
excepinfo.bstrDescription = 0;
excepinfo.bstrHelpFile = 0;
excepinfo.dwHelpContext = 0;
excepinfo.pvReserved = 0;
excepinfo.pfnDeferredFillIn = 0;
excepinfo.scode = 0;
VARIANT variantbstrtemp;
VARIANT *pArg = 0;
VARIANT *pRef = 0;
smIsInputEnum IsInput;
nNumParameters = nCountParameter();
if (nNumParameters != -1)
{
pArg = new VARIANT[nNumParameters];
pRef = new VARIANT[nNumParameters];
}
else
MSG("Could not get parameters from parameter list!");
if ((!pArg) || (!pRef))
MSG("There is no enough memory!");
if (m_TreeCtrl.ItemHasChildren(hItem))
MSG("Please select an operation!");