[VB6] Gestion Asynchrone des api wininet
Bonjour,
Le code ci dessous, permet de lire un flux http d'un fichier se trouvant sur un serveur distant.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 'Create an internet connection
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
If CBool(hOpen) Then
'Ouverture du pointeur HTTP
hConnect = InternetConnect(hOpen, stUrlDeb, INTERNET_DEFAULT_HTTP_PORT, vbNullString, _
vbNullString, INTERNET_SERVICE_HTTP, 0, 0)
If hConnect > 0 Then
'Préparation de l'ouverture de la page
hRequest = HttpOpenRequest(hConnect, "GET", stUrlFin, "HTTP/1.0", vbNullString, 0, _
INTERNET_FLAG_KEEP_CONNECTION, 0)
If CBool(hRequest) Then
'sHeader = "Connection: Keep-Alive" & vbCrLf
'iRetVal = HttpAddRequestHeaders(hRequest, sHeader, Len(sHeader), HTTP_ADDREQ_FLAG_REPLACE Or HTTP_ADDREQ_FLAG_ADD)
'Debug.Print iRetVal & " " & sHeader;
iRetVal = HttpSendRequest(hRequest, vbNullString, 0, vbNullString, 0)
..... |
Le problème est le suivant :
Quand le serveur est très lent à répondre (pas quand il est down car sinon un code retour envoyé), l'api HttpSendRequest attend une réponse et reste donc bloquée (parfois plusieurs minutes ...).
Du coup, mon application se "gèle" ce qui est très génant !
Y'a-t-il un moyen de gérer un timeout sur cette api ? Ou alors de pouvoir stoper l'exécution de cette api ?
Merci d'avance pour votre aide.
++
[VB6] Gestion Asynchrone des api wininet
Ca ne change rien, Visual basic plante sytématiquement !
J'ai épluché tout le Web pour trouver des infos sur la gestion asynchrone en VB, mais à part le lien suivant (que je n'arrive pas au passage à mettre en oeuvre), il n'y a quasiment rien du tout !
http://support.microsoft.com/default...%3Bfr%3B189850
Je pense que cela a du forcément être utilisé par le passé !
Je continue mes recherches ! D'avance merci pour les personnes qui pourront m'aider dans mes recherches.
++
EDIT :
Pour les pros en C, voici une méthode ...
http://www.codeguru.com/Csharp/.NET/...cle.php/c8665/
EDIT 2 :
Bon apparemment, le mode asynchrone n'est pas conseillé avec les api wininet sous Visual Basic 6 (ça fonctionne sous VB5 par contre ... bizarre) ...
Ca doit fonctionné en mode compilé mais pas en debug