IWMSHeaderLine::GetValue
Previous | Next |
IWMSHeaderLine::GetValue
The GetValue method retrieves the client cookie.
Syntax
HRESULT GetValue( BSTR* pbstrValue );
Parameters
pbstrValue
[in] Pointer to a BSTR containing the cookie.
Return Values
If the method succeeds, it returns S_OK. If it fails, it returns an HRESULT error code.
Return code | Number | Description |
E_INVALIDARG | 0x80070057 | pbstrValue is null. |
Example Code
// Declarations. HRESULT hr = S_OK; IWMSHeaderLine *pHeaderLine = NULL; IWMSContext *pRequestContext = NULL; IWMSContext *pResponseContext = NULL; CComBSTR bstrCookie; CComBSTR bstrNewSetCookie; CComBSTR bstrOrigSetCookie; hr = pCommandCtx->GetCommandRequest( &pRequestContext ); if (FAILED(hr)) return(hr); hr = pCommandCtx->GetCommandResponse( &pResponseContext ); if (FAILED(hr)) return(hr); // Retrieve a pointer to the IWMSHeaderLine interface. // Specify the cookie value of the request context. hr = pRequestContext->GetAndQueryIUnknownValue( L"Cookie", WMS_CONTEXT_NO_NAME_HINT, IID_IWMSHeaderLine, (IUnknown**) &pHeaderLine, 0); if (FAILED(hr)) return(hr); // Retrieve the cookie. hr = pHeaderLine->GetValue( &bstrCookie ); if (FAILED(hr)) return(hr); // If this is an authorization plug-in, you can add a Set-Cookie header // to the response. This cannot be done from an event plug-in, however, // because the response may already have been sent by the time the code // is executed. // TODO: You can modify the cookie here. // Retrieve the "Set-Cookie" value from the response context if it // already exists. Do not overwrite the existing value. hr = pResponseContext->GetStringValue( L"Set-Cookie", WMS_CONTEXT_NO_NAME_HINT, &bstrOrigSetCookie, 0 ); if( SUCCEEDED( hr ) ) { // The response already contains a Set-Cookie header. Concatenate // your cookie to the existing value. bstrNewSetCookie.AssignBSTR( bstrOrigSetCookie ); if( !bstrNewSetCookie ) { return( E_OUTOFMEMORY ); } bstrNewSetCookie.Append( L", " ); if( !bstrNewSetCookie ) { return( E_OUTOFMEMORY ); } bstrNewSetCookie.AppendBSTR( bstrCookie ); if( !bstrNewSetCookie ) { return( E_OUTOFMEMORY ); } } else { // The response does not already contain a Set-Cookie header. hr = S_OK; bstrNewSetCookie.AssignBSTR( bstrCookie ); if( !bstrNewSetCookie ) { return( E_OUTOFMEMORY ); } } // Specify the new cookie. hr = pResponseContext->SetStringValue( L"Set-Cookie", WMS_CONTEXT_NO_NAME_HINT, bstrNewSetCookie, 0 ); if (FAILED(hr)) return(hr); // Release the pointers.
Requirements
Header: wmsheaderline.h.
Library: WMSServerTypeLib.dll.
Platform: Windows Server 2003, Enterprise Edition; Windows Server 2003, Datacenter Edition; Windows Server 2008.
See Also
Previous | Next |