相关api:
1.// 启动libevent
event_base* m_base=NULL;
m_base = event_base_new();
2.创建http服务
evhttp* m_httpServer=NULL;
m_httpServer = evhttp_new(m_base);
3.绑定http服务的地址跟端口,可以重复调用,绑定多个端口
int ret = evhttp_bind_socket(m_httpServer, host, port);
4.设置回调,当http服务接收到请求的时候调用
void CGMThread::generic_handler(struct evhttp_request *req, void *arg);
evhttp_set_gencb(m_httpServer, &CGMThread::generic_handler, NULL);
5.回调处理,因为http服务是在另一个线程中,所以接收到请求,如果会修改数据,应该构造对象丢到逻辑线程里统一处理。
{
/** Returns the request URI */
const char *evhttp_request_get_uri(const struct evhttp_request *req);
获取输入数据,然后解析
// 获取http body,解析到json对象
evbuffer* bodyBuffer = evhttp_request_get_input_buffer(m_req);
size_t bodyLen = evbuffer_get_length(bodyBuffer);
unsigned char* body = evbuffer_pullup(bodyBuffer, bodyLen);
// 解析json
Json::Value reqJson(Json::objectValue);
Json::Reader reader;
if(!reader.parse((char*)data, (char*)data+datal, reqJson))
}