acl  3.5.3.0
acl::HttpServletResponse类 参考

#include <HttpServletResponse.hpp>

+ 类 acl::HttpServletResponse 继承关系图:
+ acl::HttpServletResponse 的协作图:

Public 成员函数

 HttpServletResponse (socket_stream &stream)
 
 ~HttpServletResponse (void)
 
HttpServletResponsesetContentLength (long long int n)
 
HttpServletResponsesetChunkedTransferEncoding (bool on)
 
HttpServletResponsesetKeepAlive (bool on)
 
HttpServletResponsesetContentType (const char *value)
 
HttpServletResponsesetContentEncoding (bool gzip)
 
HttpServletResponsesetCharacterEncoding (const char *charset)
 
HttpServletResponsesetDateHeader (const char *name, time_t value)
 
HttpServletResponsesetHeader (const char *name, const char *value)
 
HttpServletResponsesetHeader (const char *name, int value)
 
HttpServletResponsesetRange (long long from, long long to, long long total)
 
HttpServletResponsesetStatus (int status)
 
HttpServletResponsesetCgiMode (bool on)
 
HttpServletResponsesetRedirect (const char *location, int status=302)
 
HttpServletResponseaddCookie (HttpCookie *cookie)
 
HttpServletResponseaddCookie (const char *name, const char *value, const char *domain=NULL, const char *path=NULL, time_t expires=0)
 
void encodeUrl (string &out, const char *url)
 
http_headergetHttpHeader (void) const
 
bool write (const void *data, size_t len)
 
bool write (const string &buf)
 
bool write (const xml &body, const char *charset="utf-8")
 
bool write (const json &body, const char *charset="utf-8")
 
int format (const char *fmt,...) ACL_CPP_PRINTF(2
 
int int vformat (const char *fmt, va_list ap)
 
bool sendHeader (void)
 
ostreamgetOutputStream (void) const
 
socket_streamgetSocketStream (void) const
 
http_clientgetClient () const
 
void setHttpServletRequest (HttpServletRequest *request)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

与 HTTP 客户端响应相关的类,该类不应被继承,用户也不需要 定义或创建该类对象

在文件 HttpServletResponse.hpp24 行定义.

构造及析构函数说明

◆ HttpServletResponse()

acl::HttpServletResponse::HttpServletResponse ( socket_stream stream)

构造函数

参数
stream{socket_stream&} 数据流,内部不会自动关闭流

◆ ~HttpServletResponse()

acl::HttpServletResponse::~HttpServletResponse ( void  )

成员函数说明

◆ addCookie() [1/2]

HttpServletResponse& acl::HttpServletResponse::addCookie ( HttpCookie cookie)

添加 cookie 对象,该对象必须是动态分配的,且用户自己不能 再显示释放该对象,因为内部会自动释放

参数
cookie{HttpCookie*}

◆ addCookie() [2/2]

HttpServletResponse& acl::HttpServletResponse::addCookie ( const char *  name,
const char *  value,
const char *  domain = NULL,
const char *  path = NULL,
time_t  expires = 0 
)

添加 cookie

参数
name{const char*} cookie 名
value{const char*} cookie 值
domain{const char*} cookie 存储域
path{const char*} cookie 存储路径
expires{time_t} cookie 过期时间间隔,当当前时间加 该值为 cookie 的过期时间截(秒)

◆ encodeUrl()

void acl::HttpServletResponse::encodeUrl ( string out,
const char *  url 
)

将 url 进行 url 编码

参数
out{string&} 存储编码后的结果
url{const char*} 未编码前原始的 url

◆ format()

int acl::HttpServletResponse::format ( const char *  fmt,
  ... 
)

带格式方式向 HTTP 客户端发送响应数据,内部自动调用 HttpServletResponse::write(const void*, size_t) 过程,在使用 chunked 方式传输数据时,应该应该最后再调用 write(NULL, 0) 表示数据结束

参数
fmt{const char*} 变参格式字符串
返回
{int} 成功则返回值 > 0,否则返回 -1

◆ getClient()

http_client* acl::HttpServletResponse::getClient ( ) const
inline

获得底层的 http_client 通信对象

返回
{http_client*} 非 NULL

在文件 HttpServletResponse.hpp261 行定义.

262  {
263  return client_;
264  }

◆ getHttpHeader()

http_header& acl::HttpServletResponse::getHttpHeader ( void  ) const

获得 HTTP 响应头

返回
{http_header&}

◆ getOutputStream()

ostream& acl::HttpServletResponse::getOutputStream ( void  ) const

获得 HTTP 响应对象的输出流对象,用户在调用 sendHeader 发送 完 HTTP 响应头后,通过该输出流来发送 HTTP 数据体

返回
{ostream&}

◆ getSocketStream()

socket_stream& acl::HttpServletResponse::getSocketStream ( void  ) const

获得 HTTP 双向流对象,由构造函数的参数输入

返回
{socket_stream&}

◆ sendHeader()

bool acl::HttpServletResponse::sendHeader ( void  )

发送 HTTP 响应头,用户应该发送数据体前调用此函数将 HTTP 响应头发送给客户端

返回
{bool} 发送是否成功,若返回 false 则表示连接中断, 当调用以上几个写的函数时,本函数不必显式被调用,如果是 通过从 getOutputStream 获得的 socket 流写数据时,则本函数 必须显式被调用

◆ setCgiMode()

HttpServletResponse& acl::HttpServletResponse::setCgiMode ( bool  on)

设置为 CGI 模式,用户一般不需手工设置,因为 HttpServlet 类 会自动设置是否是 CGI 模式

参数
on{bool} 是否是 CGI 模式

◆ setCharacterEncoding()

HttpServletResponse& acl::HttpServletResponse::setCharacterEncoding ( const char *  charset)

设置 HTTP 响应数据体中字符集,当已经在 setContentType 设置 了字符集,则就不必再调用本函数设置字符集

参数
charset{const char*} 响应体数据的字符集
返回
{HttpServletResponse&}

◆ setChunkedTransferEncoding()

HttpServletResponse& acl::HttpServletResponse::setChunkedTransferEncoding ( bool  on)

设置 HTTP chunked 传输模式

参数
on{bool} 如果为 true,即使设置了 setContentLength, 则内部也会采用 chunked 传输方式,根据 HTTP RFC 规范要求, chunked 传输的优先级高级 conteng-length 方式
返回
{HttpServletResponse&}

◆ setContentEncoding()

HttpServletResponse& acl::HttpServletResponse::setContentEncoding ( bool  gzip)

设置 HTTP 响应数据体采用 gzip 压缩格式

参数
gzip{bool} 是否采用 gzip 压缩格式
返回
{HttpServletResponse&}

◆ setContentLength()

HttpServletResponse& acl::HttpServletResponse::setContentLength ( long long int  n)

设置 HTTP 响应数据体的长度

参数
n{acl_int64} 数据体长度

◆ setContentType()

HttpServletResponse& acl::HttpServletResponse::setContentType ( const char *  value)

设置 HTTP 响应数据体的 Content-Type 字段值,可字段值可以为: text/html 或 text/html; charset=utf8 格式

参数
value{const char*} 字段值
返回
{HttpServletResponse&}

◆ setDateHeader()

HttpServletResponse& acl::HttpServletResponse::setDateHeader ( const char *  name,
time_t  value 
)

设置 HTTP 响应头中的日期格式的字段

参数
name{const char*} HTTP 响应头中的字段名
value{time_t} 时间值

◆ setHeader() [1/2]

HttpServletResponse& acl::HttpServletResponse::setHeader ( const char *  name,
const char *  value 
)

设置 HTTP 响应头中的字符串格式字段

参数
name{const char*} HTTP 响应头中的字段名
value{const char*} 字段值

◆ setHeader() [2/2]

HttpServletResponse& acl::HttpServletResponse::setHeader ( const char *  name,
int  value 
)

设置 HTTP 响应头中的整数格式字段

参数
name{const char*} HTTP 响应头中的字段名
value{int} 字段值

◆ setHttpServletRequest()

void acl::HttpServletResponse::setHttpServletRequest ( HttpServletRequest request)

设置 http 请求对象,该函数目前只应被 HttpServlet 类内部调用

参数
request{HttpServletRequest*}

◆ setKeepAlive()

HttpServletResponse& acl::HttpServletResponse::setKeepAlive ( bool  on)

设置与 HTTP 客户端保持联系长连接

参数
on{bool}
返回
{HttpServletResponse&}

◆ setRange()

HttpServletResponse& acl::HttpServletResponse::setRange ( long long  from,
long long  to,
long long  total 
)

对于分区下载,调用本函数设置数据下载的偏移位置(下标从 0 开始)

参数
from{http_off_t} 数据区间起始偏移位置(下标从 0 开始计算)
to{http_off_t} 数据区间结束位置(该值需小于总数据长度)
total{http_off_t} 总数据长度,当数据源为一个静态文件时该值 应等于该文件的总长度大小
返回
{HttpServletResponse&}

◆ setRedirect()

HttpServletResponse& acl::HttpServletResponse::setRedirect ( const char *  location,
int  status = 302 
)

设置 HTTP 响应头中的重定向 location 字段

参数
location{const char*} URL,非空
status{int} HTTP 响应状态码,一般为 3xx 类

◆ setStatus()

HttpServletResponse& acl::HttpServletResponse::setStatus ( int  status)

设置 HTTP 响应头中的状态码:1xx, 2xx, 3xx, 4xx, 5xx

参数
status{int} HTTP 响应状态码, 如:200

◆ vformat()

int int acl::HttpServletResponse::vformat ( const char *  fmt,
va_list  ap 
)

带格式方式向 HTTP 客户端发送响应数据,内部自动调用 HttpServletResponse::write(const string&) 过程,在使用 chunked 方式传输数据时,应该应该最后再调用 write(NULL, 0) 表示数据结束

参数
fmt{const char*} 变参格式字符串
ap{va_list} 变参列表
返回
{int} 成功则返回值 > 0,否则返回 -1

◆ write() [1/4]

bool acl::HttpServletResponse::write ( const void *  data,
size_t  len 
)

向客户端发送 HTTP 数据体响应数据,可以循环调用此函数, 当通过 setChunkedTransferEncoding 设置了 chunked 传输方式后, 内部自动采用 chunked 传输方式;调用此函数不必显式调用 sendHeader 函数来发送 HTTP 响应头,因为内部会自动在第一次 写时发送 HTTP 响应头;另外,在使用 chunked 方式传输数据时, 应该应该最后再调用一次本函数,且参数均设为 0 表示数据结束

参数
data{const void*} 数据地址
len{size_t} data 数据长度
返回
{bool} 发送是否成功,如果返回 false 表示连接中断

◆ write() [2/4]

bool acl::HttpServletResponse::write ( const string buf)

向客户端发送 HTTP 数据体响应数据,可以循环调用此函数,该函数 内部调用 HttpServletResponse::write(const void*, size_t) 过程, 另外,在使用 chunked 方式传输数据时,应该应该最后再调用一次本函数, 且输入空串,即 buf.empty() == true

参数
buf{const string&} 数据缓冲区
返回
{bool} 发送是否成功,如果返回 false 表示连接中断

◆ write() [3/4]

bool acl::HttpServletResponse::write ( const xml body,
const char *  charset = "utf-8" 
)

向客户端发送 HTTP Xml 响应数据体

参数
body{const xml&} 数据缓冲区
charset{const char*} 数据体字符集
返回
{bool} 发送是否成功,如果返回 false 表示连接中断

◆ write() [4/4]

bool acl::HttpServletResponse::write ( const json body,
const char *  charset = "utf-8" 
)

向客户端发送 HTTP Json 响应数据体

参数
body{const json&} 数据缓冲区
charset{const char*} 数据体字符集
返回
{bool} 发送是否成功,如果返回 false 表示连接中断

该类的文档由以下文件生成: