📄 client.cpp
字号:
HRESULT hr = S_OK;
CClientFaultInfo *pFaultInfo;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
if (!pbstrFaultstring)
return E_INVALIDARG;
*pbstrFaultstring = NULL;
hr = RetrieveFaultInfo(&pFaultInfo);
if (SUCCEEDED(hr))
{
if (pFaultInfo->HasFaultInfo())
{
*pbstrFaultstring = SysAllocString(pFaultInfo->getfaultstring());
if (!(*pbstrFaultstring))
hr = E_OUTOFMEMORY;
}
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::get_faultstring - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::get_faultactor(BSTR * pbstrActor)
//
// parameters:
//
// description:
// Returns the faultactor value from SOAP fault message
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_faultactor(
/* [out, retval] */ BSTR * pbstrActor)
{
HRESULT hr = S_OK;
CClientFaultInfo *pFaultInfo;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
if (!pbstrActor)
return E_INVALIDARG;
*pbstrActor = NULL;
hr = RetrieveFaultInfo(&pFaultInfo);
if (SUCCEEDED(hr))
{
if (pFaultInfo->HasFaultInfo() && pFaultInfo->getfaultactor())
{
*pbstrActor = SysAllocString(pFaultInfo->getfaultactor());
if (!(*pbstrActor))
hr = E_OUTOFMEMORY;
}
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::get_faultstring - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::get_detail(BSTR * pbstrDetail)
//
// parameters:
//
// description:
// Returns the detail element from SOAP fault message
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_detail(
/* [out, retval] */ BSTR * pbstrDetail)
{
HRESULT hr = S_OK;
CClientFaultInfo *pFaultInfo;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
if (!pbstrDetail)
return E_INVALIDARG;
*pbstrDetail = NULL;
hr = RetrieveFaultInfo(&pFaultInfo);
if (SUCCEEDED(hr))
{
if (pFaultInfo->HasFaultInfo() && pFaultInfo->getdetail())
{
*pbstrDetail = SysAllocString(pFaultInfo->getdetail());
if (!(*pbstrDetail))
hr = E_OUTOFMEMORY;
}
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::get_detail - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::get_ConnectorProperty(BSTR PropertyName, VARIANT *pPropertyValue)
//
// parameters:
//
// description:
// Returns the requested connection property
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_ConnectorProperty(
/* [in] */ BSTR PropertyName,
/* [out, retval] */ VARIANT *pPropertyValue)
{
HRESULT hr = S_OK;
CClientThreadStore *pStore;
CClientFaultInfo *pFaultInfo = NULL;
CComPointer<ISoapConnector> pConnector;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
VariantClear(pPropertyValue);
CHK(RetrieveThreadStore(&pStore, true));
pFaultInfo = pStore->getFaultInfo();
if (!pFaultInfo)
CHK(OLE_E_BLANK);
// Clear previous faults/errors
pFaultInfo->Reset();
SetErrorInfo(0L, NULL);
if (!m_bflInitSuccess)
{
pStore->getFaultInfo()->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
SOAP_CLIENT_NOT_INITED, OLE_E_BLANK, NULL, NULL);
CHK(OLE_E_BLANK);
}
CHK(RetrieveConnector(&pConnector));
ASSERT(pConnector != 0);
CHK(pConnector->get_Property(PropertyName, pPropertyValue));
hr = S_OK;
Cleanup:
if (pConnector)
{
ReturnConnector(pConnector);
}
if (FAILED(hr) && pFaultInfo)
{
pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::get_ConnectorProperty - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::put_ConnectorProperty(BSTR PropertyName, VARIANT PropertyValue)
//
// parameters:
//
// description:
// Sets the requested connection property
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::put_ConnectorProperty(
/* [in] */ BSTR PropertyName,
/* [in] */ VARIANT PropertyValue)
{
HRESULT hr = S_OK;
CClientThreadStore *pStore = 0;
CClientFaultInfo *pFaultInfo = 0;
CComPointer<ISoapConnector> pConnector;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
CHK(RetrieveThreadStore(&pStore, true));
pFaultInfo = pStore->getFaultInfo();
if (!pFaultInfo)
CHK(OLE_E_BLANK);
// Clear previous faults/errors
pFaultInfo->Reset();
SetErrorInfo(0L, NULL);
if (!m_bflInitSuccess)
{
pStore->getFaultInfo()->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
SOAP_CLIENT_NOT_INITED, OLE_E_BLANK, NULL, NULL);
CHK(OLE_E_BLANK);
}
CHK(RetrieveConnector(&pConnector));
ASSERT(pConnector != 0);
CHK(pConnector->put_Property(PropertyName, PropertyValue));
CHK(StoreProperty(PropertyName, PropertyValue));
hr = S_OK;
Cleanup:
if (pConnector)
{
ReturnConnector(pConnector);
}
if (FAILED(hr) && pFaultInfo)
{
globalAddError(HrToMsgId(hr), SOAP_IDS_CLIENT, hr);
pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::put_ConnectorProperty - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::get_ClientProperty(BSTR PropertyName, VARIANT *pPropertyValue)
//
// parameters:
//
// description:
// Returns the requested client property
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::get_ClientProperty(
/* [in] */ BSTR PropertyName,
/* [out, retval] */ VARIANT *pPropertyValue)
{
HRESULT hr = S_OK;
CClientFaultInfo *pFaultInfo = NULL;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
VariantClear(pPropertyValue);
CHK(RetrieveFaultInfo(&pFaultInfo));
CHK_BOOL( pFaultInfo, OLE_E_BLANK);
// Clear previous faults/errors
pFaultInfo->Reset();
SetErrorInfo(0L, NULL);
#ifndef UNDER_CE
if (wcscmp(PropertyName, _T("ServerHTTPRequest"))==0)
{
VariantInit(pPropertyValue);
V_VT(pPropertyValue) = VT_BOOL;
V_BOOL(pPropertyValue) = m_bUseServerHTTPRequest ?
VARIANT_TRUE : VARIANT_FALSE;
}
else if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#else
if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#endif
{
VariantInit(pPropertyValue);
V_VT(pPropertyValue) = VT_BSTR;
V_BSTR(pPropertyValue) = ::SysAllocString(m_bstrCLSIDConnector);
}
else if (wcscmp(PropertyName, g_pwstrEncodingAttribute) == 0)
{
V_VT(pPropertyValue) = VT_BSTR;
if (m_bstrpreferredEncoding.Len()>0)
{
V_BSTR(pPropertyValue) = ::SysAllocString(m_bstrpreferredEncoding);
}
else
{
V_BSTR(pPropertyValue) = ::SysAllocString(g_pwstrUTF8);
}
CHK_BOOL( V_BSTR(pPropertyValue), E_OUTOFMEMORY);
}
else
{ // Unknown property
pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT,
SOAP_UNKNOWN_PROPERTY, CLIENT_UNKNOWN_PROPERTY, NULL, NULL);
CHK(CLIENT_UNKNOWN_PROPERTY);
}
Cleanup:
if (FAILED(hr) && pFaultInfo)
{
globalAddError(HrToMsgId(hr), SOAP_IDS_CLIENT, hr);
pFaultInfo->FaultMsgFromResourceHr(SOAP_IDS_CLIENT, 0, hr, NULL, NULL);
}
return hr;
}
#ifndef CE_NO_EXCEPTIONS
catch (...)
#else
__except(1)
#endif
{
ASSERTTEXT (FALSE, "CSoapClient::get_ClientProperty - Unhandled Exception");
return E_FAIL;
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// function: HRESULT CSoapClient::put_ClientProperty(BSTR PropertyName, VARIANT PropertyValue)
//
// parameters:
//
// description:
// Sets the requested client property
// returns:
//
////////////////////////////////////////////////////////////////////////////////////////////////////
HRESULT CSoapClient::put_ClientProperty(
/* [in] */ BSTR PropertyName,
/* [in] */ VARIANT PropertyValue)
{
HRESULT hr = E_INVALIDARG;
CClientFaultInfo *pFaultInfo = NULL;
#ifndef CE_NO_EXCEPTIONS
try
#else
__try
#endif
{
// Clear previous faults/errors
CHK(RetrieveFaultInfo(&pFaultInfo));
CHK_BOOL(pFaultInfo, OLE_E_BLANK);
pFaultInfo->Reset();
SetErrorInfo(0L, NULL);
#ifndef UNDER_CE
if (wcscmp(PropertyName, _T("ServerHTTPRequest"))==0)
{
if (V_VT(&PropertyValue)==VT_BOOL)
{
m_bUseServerHTTPRequest = V_BOOL(&PropertyValue)==VARIANT_TRUE ? true : false;
}
}
else if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#else
if (wcscmp(PropertyName, g_pwstrConnectorProgID) == 0)
#endif
{
if (V_VT(&PropertyValue) == VT_BSTR)
{
if (V_BSTR(&PropertyValue) == 0 || * V_BSTR(&PropertyValue) == L'\0' ||
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -