Extracting URI Components

This tutorials describe the steps to extract URI components.

Introduction

URI components can be extracted from an URI using TUriC8::Extract() and passing a TUriComponent flag. For example, EUriQuery or EUriPath.

Extracting a scheme component

The following code fragment illustrates how to extract a scheme component. Parse the URI before the component is extracted calling TUriParser8::Parse().


_LIT8( KUri,"http://web.intra/Dev/Sysdoc/devlib.htm" );
TUriParser8 parser;                      // URI parser object
TInt result = parser.Parse( KUri );      // parse the URI descriptor     

//Extract the scheme component from the parsed URI
const TDesC8& des = parser.Extract( EUriScheme );

where des is a descriptor that contains the extracted scheme component. Other components such as userinfo, host, port and so on defined in TUriComponent can be extracted in a similar way.

Extracting an authority component

To retrieve a specific authority component from the URI, call TAuthority8::Extract(). The following code fragment illustrates how to extract a authority component.


_LIT8( KAuthorityDesc,    "http://user:pass@www.mypage.com" );
TAuthorityParser8 authorityParser;        //Authority parser object 

authorityParser.Parse( KAuthorityDesc );  //Parse the authority descriptor    
//extract the user infomation from the authority component
const TDesC8& des = authorityParser.Extract( EAuthorityUserinfo ); 

where, des contains the user info that is extracted from the authority component. EAuthorityUserinfo is an enum value of TAuthorityComponent. Similarly, host and port can be extracted using EAuthorityHost and EAuthorityPort respectively, which are defined in TAuthorityComponent.

Displaying the URI

To create a new descriptor containing the desired component or the full URI, call TUriC8::DisplayFormL().

This converts a component into a new descriptor. The component to be converted can take any value between EUriScheme and EUriFragment or EUriComplete (for the full URI). This method is used to obtain a pointer to a 16 bit descriptor for GUI display of URI.

HBufC16* uri = parsedUri->DisplayFormL( EUriComplete );

where EUriComplete indicates that all the components in the URI are displayed.

To fetch the URI, call TUriC8::UriDes(). This returns a pointer to 8 bit descriptor(TDesC8) containing the URI, which is used for HTTP requests.

Displaying authority

To create a new descriptor containing a specific component or the full authority component, call TAuthority8::DisplayFormL().

This converts a component into a new descriptor. The component to be converted can take any value between EAuthorityUserinfo and EAuthorityPort or the full authority, EAuthorityComplete.

HBufC authority = parsedUri->DisplayFormL( EAuthorityComplete );

where EAuthorityComplete means that the complete authority is displayed.

See also

For related information, see:

HTTP Utilities Library Overview