# Poco::Net

# class HTTPSessionFactory

Library: Net
Package: HTTPClient
Header: Poco/Net/HTTPSessionFactory.h

## Description

A factory for HTTPClientSession objects.

Given a URI, this class creates a HTTPClientSession (for http) or a HTTPSClientSession (for https) for accessing the URI.

The actual work of creating the session is done by HTTPSessionInstantiator objects that must be registered with a HTTPSessionFactory.

## Member Summary

Member Functions: createClientSession, defaultFactory, proxyHost, proxyPassword, proxyPort, proxyUsername, registerProtocol, setProxy, setProxyCredentials, supportsProtocol, unregisterProtocol

## Constructors

### HTTPSessionFactory

HTTPSessionFactory();

Creates the HTTPSessionFactory.

### HTTPSessionFactory

HTTPSessionFactory(
const std::string & proxyHost,
Poco::UInt16 proxyPort
);

Creates the HTTPSessionFactory and sets the proxy host and port.

## Destructor

### ~HTTPSessionFactory

~HTTPSessionFactory();

Destroys the HTTPSessionFactory.

## Member Functions

### createClientSession

HTTPClientSession * createClientSession(
const Poco::URI & uri
);

Creates a client session for the given uri scheme. Throws exception if no factory is registered for the given scheme

### defaultFactory

static HTTPSessionFactory & defaultFactory();

Returns the default HTTPSessionFactory.

### proxyHost

const std::string & proxyHost() const;

Returns the proxy host, if one has been set, or an empty string otherwise.

### proxyPassword

const std::string & proxyPassword() const;

Returns the password for proxy authorization.

### proxyPort

Poco::UInt16 proxyPort() const;

Returns the proxy port number, if one has been set, or zero otherwise.

### proxyUsername

const std::string & proxyUsername() const;

Returns the username for proxy authorization.

### registerProtocol

void registerProtocol(
const std::string & protocol,
HTTPSessionInstantiator * pSessionInstantiator
);

Registers the session instantiator for the given protocol. The factory takes ownership of the SessionInstantiator.

A protocol can be registered more than once. However, only the instantiator that has been registered first is used. Also, for each call to registerProtocol(), a corresponding call to unregisterProtocol() must be made.

### setProxy

void setProxy(
const std::string & proxyHost,
Poco::UInt16 proxyPort
);

Sets the proxy host and port number.

### setProxyCredentials

void setProxyCredentials(
const std::string & username,
const std::string & password
);

Sets the username and password for proxy authorization (Basic auth only).

### supportsProtocol

bool supportsProtocol(
const std::string & protocol
);

Returns true if a session instantiator for the given protocol has been registered.

### unregisterProtocol

void unregisterProtocol(
const std::string & protocol
);

Removes the registration of a protocol.

Throws a NotFoundException if no instantiator has been registered for the given protocol.