2017-03-03 6 views
1

J'aimerais diffuser un corps de requête POST client avec libevent et evhttp. J'ai trouvé des exemples d'envoi de requêtes avec des corps fixes, mais je ne suis pas sûr de savoir comment configurer une requête avec un corps que je devrai écrire et mettre à jour continuellement pendant une période indéterminée. Est-il possible de faire cela libèrera? Ma ligne de base actuelle de code ressemble à ceci:Diffuser le corps de la requête client avec libevent evhttp?

#include <evhttp.h> 
#include <event2/event.h> 
#include <event2/http.h> 

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

int main(int argc, char **argv) { 
    struct event_base *base = event_base_new(); 
    struct evhttp_connection *conn = evhttp_connection_base_new(base, NULL, "127.0.0.1", 3000); 
    struct evhttp_request *req = evhttp_request_new(http_request_done, NULL); 

    evhttp_make_request(conn, req, EVHTTP_REQ_POST, "/"); 
    evhttp_connection_set_timeout(req->evcon, 600); 
    event_base_loop(base, EVLOOP_NONBLOCK); 
    event_base_dispatch(base); 

    return 0; 
} 

Comment puis-je envoyer une requête POST avec un corps de diffusion?

Répondre

0

LibEvent a des fonctions segmentées pour cela. Vous pouvez voir des exemples de code like this et this one

Nous pouvons voir in documentation ces fonctions - Chunk() dans la boucle entre le début()/fin(): `

evhttp_send_reply_start (struct evhttp_request req *)

evhttp_send_reply_chunk (struct evhttp_request * req, struct evbuffer * DATABUF)

evhttp_send_reply_end (struct evhttp_request * req) `.

Ce sont pour l'envoi, et si vous avez besoin pour obtenir des données chunked ENTRANT evhttp_request_set_chunked_cb()