# Proxy


```
public final class Proxy
```

<br />

*** ** * ** ***

Represents a proxy that can be used by `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetEngine`.

How HTTP requests are sent via proxies depends on a variety of factors. For example: the type of proxy being used, the HTTP version being used, whether the request is being sent to a destination with an http or https URI scheme. Additionally, whether a tunnel through the proxy is established, or not, also depends on these factors.

## Summary

| ### Nested types |
|---|
| `public abstract class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback` Controls tunnels established via HTTP CONNECT. |
| `@https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/androidx/annotation/IntDef.html(value = ) public annotation https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback.OnResponseReceivedAction` Actions that can be performed in response to `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback#onResponseReceived(java.util.List<android.util.Pair<java.lang.String,java.lang.String>>,int)` being called. |
| `public abstract class https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback.Request implements https://developer.android.com/reference/java/lang/AutoCloseable.html` Represents an HTTP CONNECT request being sent to the proxy server. |
| `@https://developer.android.com/reference/java/lang/annotation/Retention.html(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.html#SOURCE) @https://developer.android.com/reference/androidx/annotation/IntDef.html(value = ) public annotation https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.Scheme` Schemes supported when defining a proxy. |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy#SCHEME_HTTP() = 0` Establish a plaintext connection to the proxy itself. |
| `static final int` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy#SCHEME_HTTPS() = 1` Establish a secure connection to the proxy itself. |

| ### Public methods |
|---|---|
| `static @https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy#createHttpProxy(int,java.lang.String,int,java.util.concurrent.Executor,org.chromium.net.Proxy.HttpConnectCallback)( @https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.Scheme int scheme, @https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/reference/java/lang/String.html host, @https://developer.android.com/reference/androidx/annotation/IntRange.html(from = 0, to = 65535) int port, @https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor, @https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback callback )` Constructs an HTTP proxy. |

## Constants

### SCHEME_HTTP

```
public static final int SCHEME_HTTP = 0
```

Establish a plaintext connection to the proxy itself.

### SCHEME_HTTPS

```
public static final int SCHEME_HTTPS = 1
```

Establish a secure connection to the proxy itself.

## Public methods

### createHttpProxy

```
public static @NonNull Proxy createHttpProxy(
    @Proxy.Scheme int scheme,
    @NonNull String host,
    @IntRange(from = 0, to = 65535) int port,
    @NonNull Executor executor,
    @NonNull Proxy.HttpConnectCallback callback
)
```

Constructs an HTTP proxy.

When sending HTTP requests via an HTTP proxy, whether `callback` is called, or not, depends on the URI scheme of the destination:

- For destinations with an https URI scheme, CronetEngine establishes a tunnel through the proxy. The tunnel is established via an HTTP CONNECT request. In this case `
  callback` will be called to control the HTTP CONNECT request used to establish the tunnel.
- For destinations with an http URI scheme, CronetEngine sends an HTTP request, containing the entire URI of the destination, to the proxy. In this case `
  callback` will not be called.

| Parameters |
|---|---|
| `@https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.Scheme int scheme` | `https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.Scheme` that, alongside `host` and `port`, identifies this proxy. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/reference/java/lang/String.html host` | Non-empty host that, alongside `scheme` and `port`, identifies this proxy. |
| `@https://developer.android.com/reference/androidx/annotation/IntRange.html(from = 0, to = 65535) int port` | Port that, alongside `scheme` and `host`, identifies this proxy. Its value must be within \[0, 65535\]. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/reference/java/util/concurrent/Executor.html executor` | Executor where `callback` will be invoked. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull.html https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/Proxy.HttpConnectCallback callback` | Callback that allows interacting with the HTTP CONNECT request, and its response, that CronetEngine sends to establish tunnels through the proxy. |