Sous VB6.0, j'utilise l'API WinInet pour échanger des flux Http avec un
serveur distant.
Pour lire le flux entrant, j'utilise la fonction InternetReadFile comme suit :
Private Declare Function InternetReadFile Lib "wininet" (ByVal hFile As
Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long,
lNumberOfBytesRead As Long) As Integer
private sub Get_HttpResponse(XML as string)
Dim Response as string
Dim hRequest,Size, Length as long
Size = 8192&
Response = string$(Size,vbNullChar)
If InternetReadFile(hRequest, Response, Size, Length) = 0 Then
'Erreur
Else
XML= Left$(Response, Length)
End If
end sub
Il semble que InternetReadFile soit une fonction asynchrone et il arrive que
XML ne contienne qu'une partie du flux Http ce qui entraine une erreur dans
la suite de mes traitements. J'ai contourné le problème en installant une
temporisation mais il y a surement une solution plus élégante soit pour
interdire le mode asynchrone de InternetReadFile soit pour tester la fin du
fichier Http dans cette fonction.