我正在使用 libevent 及其 http API 来编写一个能够编写 C servlet 的简单 HTTP 服务器。这个 servlet 与 GET 一起工作正常,但现在我正在使用 POST 发送一些数据,我想读取传入的事件缓冲区 evb。我想打印/检查 evb 中存在的数据,但我不能。你知道如何将数据放入 char* 变量中的 evb (evbuffer) 中吗?我只看到了操作缓冲区的方法,但没有看到它。我试过:
evb->
这是代码:
#include <stdio.h>
#include "servlet.h"
void servlet(struct evhttp_request *req, struct evbuffer *evb) {
time_t now;
time(&now);
evbuffer_add_printf(evb, "<html>\n <head>\n"
" <title>%s</title>\n"
" </head>\n"
" <body>\n"
" <h1>%s</h1>\n"
" <p>Current time is: %s</p>",
"C servlet engine", "C servlet", ctime(&now));
evhttp_add_header(evhttp_request_get_output_headers(req),
"Content-Type", "text/html");
evhttp_send_reply(req, 200, "OK", evb);
}
I am trying this
void servlet(struct evhttp_request *req, struct evbuffer *evb) {
size_t len = evbuffer_get_length(evhttp_request_get_input_buffer(req));
struct evbuffer *in_evb = evhttp_request_get_input_buffer(req);
char *data;
evbuffer_copyout(in_evb, data, len);
但我得到总线错误:10(我在 Mac 上)