libevent поддерживает перенаправление HTTP

Я пытаюсь использовать libevent для эмуляции нескольких HTTP-клиентов. Следующий фрагмент кода работает, но, к сожалению, он не поддерживает перенаправление HTTP (301, 302). Интересно, поддерживается ли он вообще HTTP-пакетом libevent, если да, то как его включить.

Заранее спасибо.

void http_request_done(struct evhttp_request *req, void *arg){
    printf("http_request_done\n");
}

int http_req(char *uri, int i) {
    struct evhttp_connection *conn = evhttp_connection_base_new(base, NULL, host, port);
    struct evhttp_request *req = evhttp_request_new(http_request_done, base);
    req->cb_arg = (void*) i;
    evhttp_add_header(req->output_headers, "Host", "localhost");
    evhttp_add_header(req->output_headers, "Connection", "KeepAlive");
    evhttp_make_request(conn, req, EVHTTP_REQ_GET, uri);
}

person packetie    schedule 29.03.2014    source источник


Ответы (1)


В итоге сделал это вручную в функции http_request_done():

void http_request_done(struct evhttp_request *req, void *arg){
    const char *url = evhttp_find_header(evhttp_request_get_input_headers(req), "Location");
    if (url) {
        quickHttpRequest(id, (char*) url);
        return;
    }
    ...
}
person packetie    schedule 21.07.2014