acl
3.5.3.0
|
#include <HttpServletRequest.hpp>
Public 成员函数 | |
HttpServletRequest (HttpServletResponse &res, session &store, socket_stream &stream, const char *charset=NULL, int body_limit=102400) | |
~HttpServletRequest (void) | |
http_method_t | getMethod (string *method_s=NULL) const |
const std::vector< HttpCookie * > & | getCookies (void) const |
const char * | getCookieValue (const char *name) const |
void | setCookie (const char *name, const char *value) |
const char * | getHeader (const char *name) const |
const char * | getQueryString (void) const |
const char * | getPathInfo (void) const |
const char * | getRequestUri (void) const |
HttpSession & | getSession (bool create=true, const char *sid=NULL) |
istream & | getInputStream (void) const |
socket_stream & | getSocketStream (void) const |
long long int | getContentLength (void) const |
bool | getRange (long long int &range_from, long long int &range_to) |
const char * | getContentType (bool part=true, http_ctype *ctype=NULL) const |
const char * | getCharacterEncoding (void) const |
const char * | getLocalCharset (void) const |
const char * | getLocalAddr (void) const |
unsigned short | getLocalPort (void) const |
const char * | getRemoteAddr (void) const |
unsigned short | getRemotePort (void) const |
const char * | getRemoteHost (void) const |
const char * | getUserAgent (void) const |
const char * | getParameter (const char *name, bool case_sensitive=false) const |
http_mime * | getHttpMime (void) |
json * | getJson (size_t body_limit=1024000) |
bool | getJson (json &out, size_t body_limit=1024000) |
xml * | getXml (size_t body_limit=1024000) |
bool | getXml (xml &out, size_t body_limit=1024000) |
string * | getBody (size_t body_limit=1024000) |
bool | getBody (string &out, size_t body_limit=1024000) |
http_request_t | getRequestType (void) const |
const char * | getRequestReferer (void) const |
const http_ctype & | getHttpCtype (void) const |
bool | isKeepAlive (void) const |
int | getKeepAlive (void) const |
bool | getVersion (unsigned &major, unsigned &minor) const |
void | getAcceptEncoding (std::vector< string > &out) const |
void | setRwTimeout (int rw_timeout) |
http_request_error_t | getLastError (void) const |
http_client * | getClient (void) const |
void | fprint_header (ostream &out, const char *prompt) |
void | sprint_header (string &out, const char *prompt) |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
与 HTTP 客户端请求相关的类,该类不应被继承,用户也不需要 定义或创建该类对象
在文件 HttpServletRequest.hpp 第 31 行定义.
acl::HttpServletRequest::HttpServletRequest | ( | HttpServletResponse & | res, |
session & | store, | ||
socket_stream & | stream, | ||
const char * | charset = NULL , |
||
int | body_limit = 102400 |
||
) |
构造函数
res | {HttpServletResponse&} |
store | {session&} 存储会话数据的对象 |
stream | {socket_stream&} 数据流,内部不会主动关闭流 |
charset | {const char*} 本地字符集,该值非空时, 内部会自动将 HTTP 请求的数据转换为本地字符集,否则不转换 |
body_limit | {int} 针对 POST 方法,当数据体为文本参数 类型时,此参数限制数据体的长度;当数据体为数据流或 MIME 格式或 on 为 false,此参数无效 |
acl::HttpServletRequest::~HttpServletRequest | ( | void | ) |
void acl::HttpServletRequest::fprint_header | ( | ostream & | out, |
const char * | prompt | ||
) |
将 HTTP 请求头输出至流中(文件流或网络流)
out | {ostream&} |
prompt | {const char*} 提示内容 |
void acl::HttpServletRequest::getAcceptEncoding | ( | std::vector< string > & | out | ) | const |
获得 HTTP 客户端支持的数据压缩算法集合
out | {std::vector<string>&} 存储结果集 |
string* acl::HttpServletRequest::getBody | ( | size_t | body_limit = 1024000 | ) |
针对 POST 类方法(即有数据请求体情形),可以直接调用此方法获得请求 数据体的内容
body_limit | {size_t} 限定数据体长度以防止内存溢出,若请求数据 体超过此值,则返回错误;如果此值设为 0,则不限制长度 |
bool acl::HttpServletRequest::getBody | ( | string & | out, |
size_t | body_limit = 1024000 |
||
) |
该功能与上面方法类似,唯一区别是将结果存入用户传入的对象中
out | {string&} |
body_limit | {size_t} |
const char* acl::HttpServletRequest::getCharacterEncoding | ( | void | ) | const |
获得 HTTP 请求头中的 Content-Type: text/html; charset=gb2312 中的 charset 字段值 gb2312
http_client* acl::HttpServletRequest::getClient | ( | void | ) | const |
当 HttpServlet 类以服务模式(即非 CGI 方式)运行时,可以调用此 方法获得客户端连接的 HTTP 类对象,从而获得更多的参数
long long int acl::HttpServletRequest::getContentLength | ( | void | ) | const |
获得 HTTP 请求数据的数据长度
const char* acl::HttpServletRequest::getContentType | ( | bool | part = true , |
http_ctype * | ctype = NULL |
||
) | const |
获得 HTTP 请求头中 Content-Type: text/html; charset=gb2312 Content-Type 的字段值
part | {bool} 如果为 true 则返回 text,否则返回完整的 值,如:text/html; charset=gb2312 |
ctype | {http_ctype*} 为非空指针时,将存储完整的 http_ctype 信息 |
const std::vector<HttpCookie*>& acl::HttpServletRequest::getCookies | ( | void | ) | const |
获得 HTTP 客户端请求的所有 cookie 对象集合
const char* acl::HttpServletRequest::getCookieValue | ( | const char * | name | ) | const |
获得 HTTP 客户端请求的某个 cookie 值
name | {const char*} cookie 名称,必须非空 |
const char* acl::HttpServletRequest::getHeader | ( | const char * | name | ) | const |
获得 HTTP 请求头中的某个字段值
name | {const char*} HTTP 请求头中的字段名,非空 |
const http_ctype& acl::HttpServletRequest::getHttpCtype | ( | void | ) | const |
获得根据 HTTP 请求头获得的 http_ctype 对象
http_mime* acl::HttpServletRequest::getHttpMime | ( | void | ) |
当 HTTP 请求头中的 Content-Type 为 multipart/form-data; boundary=xxx 格式时,说明为文件上传数据类型, 则可以通过此函数获得 http_mime 对象
istream& acl::HttpServletRequest::getInputStream | ( | void | ) | const |
获得与 HTTP 客户端连接关联的输入流对象引用
json* acl::HttpServletRequest::getJson | ( | size_t | body_limit = 1024000 | ) |
数据类型为 text/json 或 application/json 格式时可调用此方法读取 json 数据体并进行解析,成功后返回 json 对象,该对象由内部产生并管理,当 本 HttpServletRequest 对象释放时该 json 对象一起被释放
body_limit | {size_t} 限定数据体长度以防止内存溢出,若请求数据 体超过此值,则返回错误;如果此值设为 0,则不限制长度 |
bool acl::HttpServletRequest::getJson | ( | json & | out, |
size_t | body_limit = 1024000 |
||
) |
该功能与上面方法类似,唯一区别是将解析结果存入用户传入的对象中
out | {json&} |
body_limit | {size_t} 限定数据体长度以防止内存溢出,若请求数据 体超过此值,则返回错误;如果此值设为 0,则不限制长度 |
int acl::HttpServletRequest::getKeepAlive | ( | void | ) | const |
当客户端要求保持长连接时,从 HTTP 请求头中获得保持的时间
http_request_error_t acl::HttpServletRequest::getLastError | ( | void | ) | const |
获得上次出错的错误号
const char* acl::HttpServletRequest::getLocalAddr | ( | void | ) | const |
返回 HTTP 连接的本地 IP 地址
const char* acl::HttpServletRequest::getLocalCharset | ( | void | ) | const |
返回本地的字段字符集 @ return {const char*} 返回 NULL 表示没有设置本地字符集
unsigned short acl::HttpServletRequest::getLocalPort | ( | void | ) | const |
返回 HTTP 连接的本地 PORT 号
http_method_t acl::HttpServletRequest::getMethod | ( | string * | method_s = NULL | ) | const |
获得 HTTP 客户端请求方法:GET, POST, PUT, CONNECT, PURGE
method_s | {string*} 非空时存储字符串方式的请求方法 |
const char* acl::HttpServletRequest::getParameter | ( | const char * | name, |
bool | case_sensitive = false |
||
) | const |
获得 HTTP 请求中的参数值,该值已经被 URL 解码且 转换成本地要求的字符集;针对 GET 方法,则是获得 URL 中 ? 后面的参数值;针对 POST 方法,则可以获得 URL 中 ? 后面的参数值或请求体中的参数值
name | {const char*} 参数名 |
case_sensitive | {bool} 比较时针对参数名是否区分大小写 |
const char* acl::HttpServletRequest::getPathInfo | ( | void | ) | const |
获得 http://test.com.cn/cgi-bin/test?name=value 中的 /cgi-bin/test 路径部分
const char* acl::HttpServletRequest::getQueryString | ( | void | ) | const |
获得 HTTP GET 请求方式 URL 中的参数部分,即 ? 后面的部分
bool acl::HttpServletRequest::getRange | ( | long long int & | range_from, |
long long int & | range_to | ||
) |
如果客户端的请求是分段数据,则该函数将获得请求头中的长度起始地址 及结束地址
range_from | {long long int&} 偏移起始位置 |
range_to | {long long int&} 偏移结束位置 |
const char* acl::HttpServletRequest::getRemoteAddr | ( | void | ) | const |
返回 HTTP 连接的远程客户端 IP 地址
const char* acl::HttpServletRequest::getRemoteHost | ( | void | ) | const |
获得 HTTP 请求头中设置的 Host 字段
unsigned short acl::HttpServletRequest::getRemotePort | ( | void | ) | const |
返回 HTTP 连接的远程客户端 PORT 号
const char* acl::HttpServletRequest::getRequestReferer | ( | void | ) | const |
获得 HTTP 请求页面的 referer URL
http_request_t acl::HttpServletRequest::getRequestType | ( | void | ) | const |
获得 HTTP 请求数据的类型
const char* acl::HttpServletRequest::getRequestUri | ( | void | ) | const |
获得 http://test.com.cn/cgi-bin/test?name=value 中的 /cgi-bin/test?name=value 路径部分
HttpSession& acl::HttpServletRequest::getSession | ( | bool | create = true , |
const char * | sid = NULL |
||
) |
获得与该 HTTP 会话相关的 HttpSession 对象引用
create | {bool} 当 session 不存在时是否在缓存服务器自动创建; 当某客户端的 session 不存在且该参数为 false 时,则该函数返 回的 session 对象会因没有被真正创建而无法进行读写操作 |
sid | {const char*} 当 session 不存在,且 create 参数非空时, 如果 sid 非空,则使用此值设置用户的唯一会话,同时添加进客户端的 cookie 中 |
socket_stream& acl::HttpServletRequest::getSocketStream | ( | void | ) | const |
获得 HTTP 双向流对象,由构造函数的参数输入
const char* acl::HttpServletRequest::getUserAgent | ( | void | ) | const |
获得 HTTP 请求头中设置的 User-Agent 字段
bool acl::HttpServletRequest::getVersion | ( | unsigned & | major, |
unsigned & | minor | ||
) | const |
获得 HTTP 客户端请求的版本号
major | {unsigned&} 将存放主版本号 |
minor | {unsigned&} 将存放次版本号 |
xml* acl::HttpServletRequest::getXml | ( | size_t | body_limit = 1024000 | ) |
数据类型为 text/xml 或 application/xml 格式时可调用此方法读取 xml 数据体并进行解析,成功后返回 mxl 对象,该对象由内部产生并管理,当 本 HttpServletRequest 对象释放时该 xml 对象一起被释放
body_limit | {size_t} 限定数据体长度以防止内存溢出,若请求数据 体超过此值,则返回错误;如果此值设为 0,则不限制长度 |
bool acl::HttpServletRequest::getXml | ( | xml & | out, |
size_t | body_limit = 1024000 |
||
) |
该功能与上面方法类似,唯一区别是将解析结果存入用户传入的对象中
out | {xml&} |
body_limit | {size_t} 限定数据体长度以防止内存溢出,若请求数据 体超过此值,则返回错误;如果此值设为 0,则不限制长度 |
bool acl::HttpServletRequest::isKeepAlive | ( | void | ) | const |
判断 HTTP 客户端是否要求保持长连接
void acl::HttpServletRequest::setCookie | ( | const char * | name, |
const char * | value | ||
) |
给 HTTP 请求对象添加 cookie 对象
name | {const char*} cookie 名,非空字符串 |
value | {const char*} cookie 值,非空字符串 |
void acl::HttpServletRequest::setRwTimeout | ( | int | rw_timeout | ) |
void acl::HttpServletRequest::sprint_header | ( | string & | out, |
const char * | prompt | ||
) |
将 HTTP 请求头输出至给定缓冲区中
out | {string&} |
prompt | {const char*} 提示内容 |