Parameters can be associated with header field parts at the time
of adding the part. There are two variants of RHTTPHeaders::SetFieldL()
:
the first is described previously. The second variant takes four parameters,
of which two specify the part name/value and two specify the parameter name/value.
To associate more than one parameter with the part, the function must be invoked repeatedly. This does not create duplicate parts; rather it locates the part with the specified value, and then adds additional parameters.
To
remove parameters from header parts, the entire part must be removed using RHTTPHeaders::RemoveFieldPart()
,
and then added again.
To access parameter values, the header name
and parameter name must be specified. RHTTPHeaders::GetParam()
is
used, and has an optional fourth parameter in which the part index can be
provided. If not, the API assumes that the first header part contains the
parameter.
The following code from HTTPEXAMPLECLIENT
illustrates
the use of header parameters with the WWW-Authenticate
header:
// Display realm for WWW-Authenticate header RStringF wwwAuth = strP.StringF(HTTP::EWWWAuthenticate,RHTTPSession::GetTable()); if (fieldNameStr == wwwAuth) { // check the auth scheme is 'basic' RStringF basic = strP.StringF(HTTP::EBasic,RHTTPSession::GetTable()); RStringF realm = strP.StringF(HTTP::ERealm,RHTTPSession::GetTable()); THTTPHdrVal realmVal; if ((fieldVal.StrF() == basic) && (!hdr.GetParam(wwwAuth, realm, realmVal))) { RStringF realmValStr = strP.StringF(realmVal.StrF()); fieldVal16.Copy(realmValStr.DesC()); iUtils.Test().Printf(_L("Realm is: %S\n"), &fieldVal16); realmValStr.Close(); } basic.Close(); realm.Close(); } wwwAuth.Close();