StupidBeauty
Read times:810Posted at:Mon Jan 20 04:13:54 2014
- no title specified

Wt 3.3.1文档翻译:Wt::Http::Client类参考,Wt::Http::Client Class Reference

公有成员函数

void

setTimeout (int seconds)

设置输入/输出的超时时间。详细说明……

void

setMaximumResponseSize (std::size_t bytes)

设置最大的回复尺寸。详细说明……

bool

get (const std::string &url)

启动一个GET请求。详细说明……

Signal
< boost::system::error_code,
Message > &

done ()

当前请求完成之后会发射这个信号。详细说明……

详细说明

一个HTTP客户端。

这个类实现了一个HTTP客户端。它可用来使用HTTP 协议与网页服务交互。

这个客户端类使用了异步输入/输出,并且只提供异步接口:妳无法主动等待操作完成,当操作完成时客户端对象会使用done()信号来通知妳获取结果。

因为这个客户端类使用的是异步输入/输出,所以,它会使用一个事件驱动的线程池来完成它的工作。默认情况下,这个线程池就是Wt 服务器所使用的同一个线程池,该线程池可使用WServer::ioService()获取,但是,妳也可以显式地为客户端对象提供一个输入/输出服务对象。

这个客户端对象支持HTTP和HTTPS (如果Wt在编译时启用了OpenSSL支持的话)协议,并且可用于做GET 和POST 操作。一个客户端在同一时刻只能进行一个操作。

使用示例:

...

Http::Client *client = new Http::Client(this);

client->setTimeout(15);

client->setMaximumResponseSize(10 * 1024);

client->done().connect(boost::bind(&MyWidget::handleHttpResponse, this, _1, _2));

if (client->get("http://www.webtoolkit.eu/wt/blog/feed/"))

WApplication::instance()->deferRendering();

} else {

// 在这里处理%URL中的错误

}

}

void handleHttpResponse(boost::system::error_code err, const Http::Message& response)

{

WApplication::instance()->resumeRendering();

if (!err && response.status() == 200) {

... 解析 response.body()

}

}

连接至done()信号的函数会在创建了该客户端对象的程序的上下文中运行。WServer::post()会被用来处理这个事情。

基本的访问权限认证

如果妳想向URL中加入认证信息的话,可以这样 https://username:password@www.example.com/。当妳做这件事时,要确保用户名和密码字符串都是经过了URL转义编码的(Wt::Utils::urlEncode)。例如,https://username:pass word@www.example.com /在作为参数传递时应当是https://username:pass%20word@www.example.com/

成员函数文档

Signal<boost::system::error_code, Message>& Wt::Http::Client::done

(

)

在当前请求完成时会被发射的那个信号。

如果这个HTTP 请求成功完成的话,错误码error 会是0。在那种情况下,消息体message中就包含着请求结果。

如果错误码error不为0,则,会通过err.message()给出错误消息。

处理请求结果的典型代码是:

void handle(boost::system::error_code err, const Http::Message& response)

{

if (!err) {

if (response.status() == 200) {

... 成功

}

} else {

Wt::log("error") << "Http::Client error: " << err.message();

}

}

bool Wt::Http::Client::get

(

const std::string &

url)

开始一个GET请求。

这个函数会开始一个异步的GET请求,并且会立即返回。

如果这个GET请求被计划好(scheduled)的话,这个函数会返回真( true ),于是 done()信号最终会被发射。

如果这个客户端对象无法将该请求计划好的话,这个函数会返回假(false),例如该url无效,或者该URL模式不被支持。

参考

request()done()

void Wt::Http::Client::setMaximumResponseSize

(

std::size_t

bytes)

设置最大的回复消息尺寸。

回复内容会在内存中储存。为了避免受到恶意的下游HTTP服务器的拒绝服务攻击(DoS),在这里限制了回复消息的尺寸上限。

这个限制会将状态码、消息头和回复消息体计算在内。

默认值是64KiB。

void Wt::Http::Client::setTimeout

(

int

seconds)

设置输入/输出的超时时间。

这个函数会设置对于输入/输出操作的超时时间。这个超时时间不是指的整体累积超时时间,因为每当发生输入/输出进度变化时都会重置计时器。

默认的超时时间是10秒。

杨丽萍

Your opinions
Your name:Email:Website url:Opinion content: