# PHTTPClient Class Reference

A TCP/IP socket for the HyperText Transfer Protocol version 1.0. More...

`#include <http.h>`

Inheritance diagram for PHTTPClient:

List of all members.

## Public Member Functions

| PHTTPClient (const PString &userAgentName=PString::Empty())
| Create a new HTTP client channel.
int | ExecuteCommand (Commands cmd, const PURL &url, PMIMEInfo &outMIME, const PString &dataBody, PMIMEInfo &replyMime)
| Send a command and wait for the response header (including MIME fields).
int | ExecuteCommand (const PString &cmdName, const PURL &url, PMIMEInfo &outMIME, const PString &dataBody, PMIMEInfo &replyMime)
bool | WriteCommand (Commands cmd, const PString &url, PMIMEInfo &outMIME, const PString &dataBody)
| Write a HTTP command to server.
bool | WriteCommand (const PString &cmdName, const PString &url, PMIMEInfo &outMIME, const PString &dataBody)
bool | ReadResponse (PMIMEInfo &replyMIME)
| Read a response from the server.
bool | ReadContentBody (PMIMEInfo &replyMIME)
| Read the body of the HTTP command, throwing it away.
bool | ReadContentBody (PMIMEInfo &replyMIME, PString &body)
| Read the body of the HTTP command as a string.
bool | ReadContentBody (PMIMEInfo &replyMIME, PBYTEArray &body)
| Read the body of the HTTP command as a binary block.
bool | GetDocument (const PURL &url, PMIMEInfo &outMIME, PMIMEInfo &replyMIME)
| Start getting the document specified by the URL.
bool | GetDocument (const PURL &url, PMIMEInfo &replyMIME)
bool | GetTextDocument (const PURL &url, PString &document, const PString &contentType=PString::Empty())
| Get the document specified by the URL.
bool | GetHeader (const PURL &url, PMIMEInfo &outMIME, PMIMEInfo &replyMIME)
| Get the header for the document specified by the URL.
bool | PostData (const PURL &url, const PStringToString &data)
| Post the "application/x-www-form-urlencoded" data specified to the URL.
bool | PostData (const PURL &url, PMIMEInfo &outMIME, const PString &data)
| Post the data specified to the URL.
bool | PostData (const PURL &url, PMIMEInfo &outMIME, const PString &data, PMIMEInfo &replyMIME)
| Start a post of the data specified to the URL.
bool | PostData (const PURL &url, PMIMEInfo &outMIME, const PString &data, PMIMEInfo &replyMIME, PString &replyBody)
| Post the data specified to the URL.
bool | PutTextDocument (const PURL &url, const PString &document, const PString &contentType=PMIMEInfo::TextPlain())
| Put the document specified by the URL.
bool | PutDocument (const PURL &url, PMIMEInfo &outMIME, PMIMEInfo &replyMIME)
| Put the document specified by the URL.
bool | DeleteDocument (const PURL &url)
| Delete the document specified by the URL.
void | SetAuthenticationInfo (const PString &userName, const PString &password)
| Set authentication paramaters to be use for retreiving documents.
void | SetPersistent (bool persist=true)
| Set persistent connection mode.
bool | GetPersistent () const
| Get persistent connection mode.

## Protected Member Functions

bool | AssureConnect (const PURL &url, PMIMEInfo &outMIME)
bool | InternalReadContentBody (PMIMEInfo &replyMIME, PAbstractArray *body)

## Protected Attributes

PString | m_userAgentName
bool | m_persist
PString | m_userName
PString | m_password
PHTTPClientAuthentication * | m_authentication

## Detailed Description

A TCP/IP socket for the HyperText Transfer Protocol version 1.0.

When acting as a client, the procedure is to make the connection to a remote server, then to retrieve a document using the following procedure:

          PHTTPSocket web("webserver");
          if (web.IsOpen()) {
            PINDEX len;
            if (web.GetDocument("http://www.someone.com/somewhere/url", len)) {
              PString html = web.ReadString(len);
              if (!html.IsEmpty())
                ProcessHTML(html);
            }
            else
               PError << "Could not get page." << endl;
          }
          else
             PError << "HTTP conection failed." << endl;

## Constructor & Destructor Documentation

PHTTPClient::PHTTPClient | ( | const PString & | userAgentName = `PString::Empty()` | ) |

Create a new HTTP client channel.

## Member Function Documentation

bool PHTTPClient::AssureConnect | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME |
| ) |  |  | `[protected]`

bool PHTTPClient::DeleteDocument | ( | const PURL & | url | ) |

Delete the document specified by the URL.

Returns:
  true if document is deleted.

Parameters:

  url | Universal Resource Locator for document.

int PHTTPClient::ExecuteCommand | ( | const PString & | cmdName,
|  | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | dataBody,
|  | PMIMEInfo & | replyMime |
| ) |  |  |

int PHTTPClient::ExecuteCommand | ( | Commands | cmd,
|  | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | dataBody,
|  | PMIMEInfo & | replyMime |
| ) |  |  |

Send a command and wait for the response header (including MIME fields).

Note that a body may still be on its way even if lasResponseCode is not 200!

Returns:
  true if all of header returned and ready to receive body.

bool PHTTPClient::GetDocument | ( | const PURL & | url,
|  | PMIMEInfo & | replyMIME |
| ) |  |  |

Parameters:

  url | Universal Resource Locator for document.
  replyMIME | MIME info in response

bool PHTTPClient::GetDocument | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | PMIMEInfo & | replyMIME |
| ) |  |  |

Start getting the document specified by the URL.

It is expected that ReadContentBody() is called after this returns to get, or throw away, the data body received.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  replyMIME | MIME info in response

bool PHTTPClient::GetHeader | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | PMIMEInfo & | replyMIME |
| ) |  |  |

Get the header for the document specified by the URL.

Returns:
  true if document header is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  replyMIME | MIME info in response

bool PHTTPClient::GetPersistent | ( |  | ) | const`[inline]`

Get persistent connection mode.

bool PHTTPClient::GetTextDocument | ( | const PURL & | url,
|  | PString & | document,
|  | const PString & | contentType = `PString::Empty()` |
| ) |  |  |

Get the document specified by the URL.

An empty string for the contentType parameter means that any content type is acceptable.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  document | Body read
  contentType | Content-Type header to expect

bool PHTTPClient::InternalReadContentBody | ( | PMIMEInfo & | replyMIME,
|  | PAbstractArray * | body |
| ) |  |  | `[protected]`

bool PHTTPClient::PostData | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | data,
|  | PMIMEInfo & | replyMIME,
|  | PString & | replyBody |
| ) |  |  |

Post the data specified to the URL.

The body of the reply is returned

Returns:
  true if document is has been transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  data | Information posted to the HTTP server.
  replyMIME | MIME info in response
  replyBody | Body of response

bool PHTTPClient::PostData | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | data,
|  | PMIMEInfo & | replyMIME |
| ) |  |  |

Start a post of the data specified to the URL.

It is expected that ReadContentBody() is called after this returns to get, or throw away, the data body received.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  data | Information posted to the HTTP server.
  replyMIME | MIME info in response

bool PHTTPClient::PostData | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | data |
| ) |  |  |

Post the data specified to the URL.

The data returned is thrown away.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  data | Information posted to the HTTP server.

bool PHTTPClient::PostData | ( | const PURL & | url,
|  | const PStringToString & | data |
| ) |  |  |

Post the "application/x-www-form-urlencoded" data specified to the URL.

The data returned is thrown away.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  data | Information posted to the HTTP server.

bool PHTTPClient::PutDocument | ( | const PURL & | url,
|  | PMIMEInfo & | outMIME,
|  | PMIMEInfo & | replyMIME |
| ) |  |  |

Put the document specified by the URL.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  outMIME | MIME info in request
  replyMIME | MIME info in response

bool PHTTPClient::PutTextDocument | ( | const PURL & | url,
|  | const PString & | document,
|  | const PString & | contentType = `PMIMEInfo::TextPlain()` |
| ) |  |  |

Put the document specified by the URL.

Returns:
  true if document is being transferred.

Parameters:

  url | Universal Resource Locator for document.
  document | Body read
  contentType | Content-Type header to use

bool PHTTPClient::ReadContentBody | ( | PMIMEInfo & | replyMIME,
|  | PBYTEArray & | body |
| ) |  |  |

Read the body of the HTTP command as a binary block.

Parameters:

  replyMIME | Reply MIME from server
  body | Received body as binary data

bool PHTTPClient::ReadContentBody | ( | PMIMEInfo & | replyMIME,
|  | PString & | body |
| ) |  |  |

Read the body of the HTTP command as a string.

Parameters:

  replyMIME | Reply MIME from server
  body | Received body as a string

bool PHTTPClient::ReadContentBody | ( | PMIMEInfo & | replyMIME | ) |

Read the body of the HTTP command, throwing it away.

Parameters:

  replyMIME | Reply MIME from server

bool PHTTPClient::ReadResponse | ( | PMIMEInfo & | replyMIME | ) |

Read a response from the server.

void PHTTPClient::SetAuthenticationInfo | ( | const PString & | userName,
|  | const PString & | password |
| ) |  |  |

Set authentication paramaters to be use for retreiving documents.

void PHTTPClient::SetPersistent | ( | bool | persist = `true` | ) | `[inline]`

Set persistent connection mode.

bool PHTTPClient::WriteCommand | ( | const PString & | cmdName,
|  | const PString & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | dataBody |
| ) |  |  |

bool PHTTPClient::WriteCommand | ( | Commands | cmd,
|  | const PString & | url,
|  | PMIMEInfo & | outMIME,
|  | const PString & | dataBody |
| ) |  |  |

Write a HTTP command to server.

## Member Data Documentation

PHTTPClientAuthentication* PHTTPClient::m_authentication `[protected]`

PString PHTTPClient::m_password `[protected]`

bool PHTTPClient::m_persist `[protected]`

PString PHTTPClient::m_userAgentName `[protected]`

PString PHTTPClient::m_userName `[protected]`

The documentation for this class was generated from the following file:

- http.h