Analyser les en-têtes HTTP en C++
J'utilise curl pour communiquer avec un serveur.
Quand je fais une demande de données-je recevoir les en-têtes HTTP suivie par jpeg de données, séparés par une frontière comme suit:
J'ai besoin d'analyser
- La frontière de la chaîne
- La Longueur Du Contenu.
J'ai copié les données entrantes à un char array comme ceci:
static size_t OnReceiveData ( void * pvData, size_t tSize, size_t tCount, void * pvUser )
{
printf("%*.*s", tSize * tCount, tSize * tCount, pvData);
char* _data;
if(pvData != nullptr && 0 != tCount)
{
_data = new char[tCount];
memcpy(_data, pvData, tCount);
}
return ( tCount );
}
Comment puis-je mieux le faire en C++?? Comment inspecter et analyser les _data tableau pour l'information que je veux?? Sont toutes les bibliothèques boost que je peux utiliser par exemple??
Une réponse pas d'utilisation de boost ou quoi que ce soit serait très appréciée.
OriginalL'auteur Harry Boy | 2014-09-17
Vous devez vous connecter pour publier un commentaire.
Vous pourriez analyser les en-têtes à la volée, ou de les mettre dans une carte et post-traiter plus tard.
Utilisation
find
,substr
méthodes de la std::string.Regardez Stimuler La Chaîne Des Algorithmes De La Bibliothèque, il contient beaucoup d'algorithmes, par exemple
trim
par exemple, pour placer les en-têtes dans le
std::map
et de les imprimer (rough cuts):Vous obtiendrez la sortie:
Avoir les en-têtes, vous pouvez extraire le nécessaire pour le post-traitement.
OriginalL'auteur Grigorii Chudnov
La rpc-netlib projet (basé sur boost) contient un analyseur MIME (écrit avec boost.de l'esprit).
Je ne suis pas vraiment heureux avec l'interface de l'analyseur, mais il fonctionne bien.
OriginalL'auteur Marshall Clow
Je mettrais tous les en-têtes dans une carte, après quoi vous pouvez facilement parcourir. Pas de boost nécessaire. Voici une base de travail exemple avec libcurl:
OriginalL'auteur jvandenbroek