2013-08-05 2 views
0

Est-il possible d'avoir le corps d'une requête HTTP stockée en mémoire sous la forme d'un flux de données. En particulier, j'utilise la bibliothèque C de libcurl pour écrire quelques requêtes HTTP et l'idée est d'avoir le corps des réponses HTTP en mémoire plutôt que d'écrire sur le disque.CORPS HTTP en mémoire au lieu d'écrire sur le disque

Les diverses options curl_easy_setopt (CURLOPT_WRITEFUNCTION, CURLOPT_WRITEDATA) écrivent réellement le corps de la réponse dans un fichier. Ce que je veux, c'est pouvoir travailler sur le flux de données directement dans le corps, indépendamment de ce que c'est.

Quelque chose à hauteur de:

char* dataStream = HTTP_RESPONSE_BODY 

Ceci est parce que le corps HTTP sera transmis à quelque chose d'autre pour un traitement ultérieur et de l'écriture sur le disque et la lecture prendra du temps de retour, en particulier pour les gros fichiers. Je sais que je n'ai peut-être pas assez de mémoire pour contenir de grandes données, mais il va certainement être plus rapide que d'écrire sur le disque et de relire.

Répondre

3

Vous pouvez dire cURL pour transmettre des données à une fonction définie par votre propre en en faisant correspondre le prototype: size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp); et appeler: curl_easy_setopt(easyhandle, CURLOPT_WRITEFUNCTION, write_data);

Ceci est mentionné dans le tutoriel officiel libcurl à: http://curl.haxx.se/libcurl/c/libcurl-tutorial.html

+0

Merci! Je vais l'essayer. – plaknas

+0

http://curl.haxx.se/libcurl/c/getinmemory.html –

Questions connexes