2010-03-04 8 views
3

Je travaille sur une application où je dois entrer une URL et obtenir le code d'état HTTP renvoyé par cette URL. Actuellement, j'utilise les fonctions WININET pour y parvenir. Le code pour y parvenir:C++: Obtention du code d'état HTTP à partir d'une URL

hOuvre = InternetOpenA ("MYAPP", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); hFichier = InternetOpenUrlA (hOpen, url.c_str(), NULL, 0, INTERNET_FLAG_RELOAD, 0); HttpQueryInfoA (hFichier, HTTP_QUERY_STATUS_CODE, tampon (void *), & dwBufLen, NULL);

J'ai fait quelques vérifications pour voir la performance et je peux voir qu'en moyenne un coup prend environ 300 millisecondes. Comme je vais faire plusieurs hits, le temps total arrive à environ 8-10 secondes, ce qui ralentit l'ensemble de l'application.

La même chose est atteinte sur MAC est d'environ 100 millisecondes environ (j'utilise COCOA).

Y a-t-il d'autres API sur WIN que je peux utiliser pour accélérer le processus?

Merci à l'avance, Amit

+0

Vous pouvez utiliser la bibliothèque boost :: asio. Cela peut être plus rapide. – Xorlev

+0

Avez-vous fait un reniflage de paquets pour voir combien de temps dure la récupération de l'URL? Le temps pris dépend de l'URL. – Murray

+0

effectivement nous ne pouvons pas inclure toute autre bibliothèque .. donc je dois dépendre des appels C++ standard ... – eramitmodi

Répondre

1

WinHTTP est l'autre grand API Win32 HTTP. Il est conçu plus pour les serveurs et les clients sans interface utilisateur et peut donc être plus rapide.

2

libcurl est une autre option. C'est en fait indépendant de la plateforme. La chose que vous pourriez ne pas aimer avec cette bibliothèque est que vous aurez besoin de quelques DLL supplémentaires.

+0

L '«interface facile» de libcurl est simple et supporte tout ce que vous décrivez, regardez http://curl.haxx.se/libcurl/c/libcurl-tutorial.html – jpyllman

Questions connexes