---
product: Chilkat
product_version: 11.7.0
language: cpp
language_label: C++
class: Url
class_name: CkUrl
license: free
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/vcCkUrlRef.html
---
# Chilkat Url — C++ — v11.7.0

> Chilkat 11.7.0 · language=cpp · class=Url (CkUrl)
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/Url.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/cpp/guide.md`.

## Purpose

**Parse a URL into its host, path, query, credentials, port, fragment, and TLS details.**

`Chilkat.Url` is a focused URL parsing class. Given a full URL, it extracts the hostname, host type, login, password, path, query string, fragment, port, and SSL/TLS status into easy-to-read properties. It is useful when application code needs to inspect, validate, route, log, or pass URL parts to lower-level networking or API code.

**Parse full URLs**

Call `ParseUrl` to break a complete URL into structured properties that can be inspected individually.

**Host and host type**

Read the hostname and determine whether it is a DNS name, IPv4 address, or IPv6 address.

**Path and query**

Access the URL path, query string, and combined path-with-query value for request construction or routing.

**Login and password**

Extract embedded userinfo credentials when a URL contains a login and password component.

**Port and TLS status**

Determine the explicit or implied port and whether the URL represents an SSL/TLS connection.

**Fragment handling**

Read the URL fragment separately from the path and query for workflows that need anchor or client-side state information.

**Common pattern:** Use `Url` when the application needs to decompose a URL before making a request or applying custom logic. Parse the full URL, read the properties needed by the caller, then pass the relevant pieces to classes such as `Chilkat.Http`, `Chilkat.Rest`, or `Chilkat.Socket`. Use `Url` for parsing; use the higher-level networking classes to actually send the request.

For an extended overview, see [Url Class Overview](https://www.chilkatsoft.com/url_class_overview.asp).

## Object creation, unlocking and error handling

**Object Creation**

```cpp
// Local variable on the stack
CkUrl obj;

// Dynamically allocate/delete
CkUrl *pObj = new CkUrl();
// ...
delete pObj;
```

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in C++.

How failure is reported depends on the method's return type and is stated in the note under each method below. In every case the diagnostic text is in the `LastErrorText` property of the object whose method was called.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `void get_DebugLogFilePath(CkString &str); const char *debugLogFilePath(void); void put_DebugLogFilePath(const char *newVal);` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `void get_LastErrorHtml(CkString &str); const char *lastErrorHtml(void);` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `void get_LastErrorText(CkString &str); const char *lastErrorText(void);` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `void get_LastErrorXml(CkString &str); const char *lastErrorXml(void);` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `bool get_LastMethodSuccess(void); void put_LastMethodSuccess(bool newVal);` | read/write | Indicates the success or failure of the most recent method call: `true` means success, `false` means failure. |
| `Utf8` | `bool get_Utf8(void); void put_Utf8(bool newVal);` | read/write | When set to `true`, all `const char *` arguments and return values are interpreted as UTF-8 strings. |
| `VerboseLogging` | `bool get_VerboseLogging(void); void put_VerboseLogging(bool newVal);` | read/write | If set to `true`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `void get_Version(CkString &str); const char *version(void);` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `Frag` | property, read-only | `void get_Frag(CkString &str); const char *frag(void);` |
| `Host` | property, read-only | `void get_Host(CkString &str); const char *host(void);` |
| `HostType` | property, read-only | `void get_HostType(CkString &str); const char *hostType(void);` |
| `Login` | property, read-only | `void get_Login(CkString &str); const char *login(void);` |
| `Password` | property, read-only | `void get_Password(CkString &str); const char *password(void);` |
| `Path` | property, read-only | `void get_Path(CkString &str); const char *path(void);` |
| `PathWithQueryParams` | property, read-only | `void get_PathWithQueryParams(CkString &str); const char *pathWithQueryParams(void);` |
| `Port` | property, read-only | `int get_Port(void);` |
| `Query` | property, read-only | `void get_Query(CkString &str); const char *query(void);` |
| `Scheme` | property, read-only | `void get_Scheme(CkString &str); const char *scheme(void);` |
| `Ssl` | property, read-only | `bool get_Ssl(void);` |
| `ParseUrl` | method | `bool ParseUrl(const char *url);` |

## Properties

### Url.Frag

`Chilkat 11.7.0 · cpp · Url · Frag · property · read-only · since 9.5.0.49`

```cpp
void get_Frag(CkString &str);

const char *frag(void);
```

Contains any text following a fragment marker (#) in the URL, excluding the fragment marker. Given the URI http://www.contoso.com/index.htm#main, the fragment is `main`.

### Url.Host

`Chilkat 11.7.0 · cpp · Url · Host · property · read-only · since 9.5.0.49`

```cpp
void get_Host(CkString &str);

const char *host(void);
```

The DNS host name or IP address part of the URL. For example, if the URL is `http://www.contoso.com:8080/`, the Host is `www.contoso.com`. If the URL is `https://192.168.1.124/test.html`, the Host is `192.168.1.124`.

### Url.HostType

`Chilkat 11.7.0 · cpp · Url · HostType · property · read-only · since 9.5.0.49`

```cpp
void get_HostType(CkString &str);

const char *hostType(void);
```

The type of the host name specified in the URL. Possible values are:

- `dns`: The host name is a domain name system (DNS) style host name.
- `ipv4`: The host name is an Internet Protocol (IP) version 4 host address.
- `ipv6`: The host name is an Internet Protocol (IP) version 6 host address.

### Url.Login

`Chilkat 11.7.0 · cpp · Url · Login · property · read-only · since 9.5.0.49`

```cpp
void get_Login(CkString &str);

const char *login(void);
```

If the URL contains a login and password, this is the login part. For example, if the URL is `http://user:password@www.contoso.com/index.htm`, then the login is `user`.

### Url.Password

`Chilkat 11.7.0 · cpp · Url · Password · property · read-only · since 9.5.0.49`

```cpp
void get_Password(CkString &str);

const char *password(void);
```

If the URL contains a login and password, this is the password part. For example, if the URL is `http://user:password@www.contoso.com/index.htm`, then the password is `password`.

### Url.Path

`Chilkat 11.7.0 · cpp · Url · Path · property · read-only · since 9.5.0.49`

```cpp
void get_Path(CkString &str);

const char *path(void);
```

The path (and params) part of the URL, excluding the query and fragment. If the URL is: `http://www.amazon.com/gp/product/1476752842/ref=s9_psimh_gw_p14_d0_i3?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1`, then the path is `/gp/product/1476752842/ref=s9_psimh_gw_p14_d0_i3`.

### Url.PathWithQueryParams

`Chilkat 11.7.0 · cpp · Url · PathWithQueryParams · property · read-only · since 9.5.0.58`

```cpp
void get_PathWithQueryParams(CkString &str);

const char *pathWithQueryParams(void);
```

The path (and params) part of the URL, including the query params, but excluding the fragment. If the URL is: `http://www.amazon.com/gp/product/1476752842/ref=s9_psimh_gw_p14_d0_i3?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1`, then then this property returns `/gp/product/1476752842/ref=s9_psimh_gw_p14_d0_i3?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1`.

### Url.Port

`Chilkat 11.7.0 · cpp · Url · Port · property · read-only · since 9.5.0.49`

```cpp
int get_Port(void);
```

The port number of the URL.

For example, if the URL is `http://www.contoso.com:8080/`, the port number is 8080.  
If the URL is `https://192.168.1.124/test.html`, the port number is the default 80.  
If the URL is `https://www.amazon.com/`, the port number is the default SSL/TLS port 443.

### Url.Query

`Chilkat 11.7.0 · cpp · Url · Query · property · read-only · since 9.5.0.49`

```cpp
void get_Query(CkString &str);

const char *query(void);
```

The query part of the URL, excluding the fragment. If the URL is: `http://www.amazon.com/gp/product/1476752842/ref=s9_psimh_gw_p14_d0_i3?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1#frag`, then the query is `pf_rd_m=ATVPDKIKX0DER&pf_rd_s=desktop-1`.

### Url.Scheme

`Chilkat 11.7.0 · cpp · Url · Scheme · property · read-only · since 11.6.0`

```cpp
void get_Scheme(CkString &str);

const char *scheme(void);
```

The scheme part of the URL. For example, if the URL is `https://www.contoso.com:8080/`, the Scheme is `https`.

### Url.Ssl

`Chilkat 11.7.0 · cpp · Url · Ssl · property · read-only · since 9.5.0.49`

```cpp
bool get_Ssl(void);
```

`true` if the URL indicates SSL/TLS, otherwise false. A URL beginning with `https://` indicates SSL/TLS.

## Methods

### Url.ParseUrl

`Chilkat 11.7.0 · cpp · Url · ParseUrl · method · since 9.5.0.49`

```cpp
bool ParseUrl(const char *url);
```

Parses a full URL. After parsing, the various parts of the URL are available iin the properties.

Returns true for success, false for failure.

