Toon posts:

[VB] Internet Transfer Control probleem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een VB6 programmaatje geschreven dat continu HTML-pagina's download. Hiervoor gebruik ik de Internet Transfer Control.
Dit gaat steeds een tijdje goed, maar op een gegeven moment blijft het programma altijd maar wachten op data van de server. Er wordt dus wel eerst contact gemaakt, maar dan gaat ie bij zowel de 'OpenURL' als de 'Execute' manier over de kop.
Ik heb al de nieuwste Service Pack geinstalleerd, maar dit helpt helaas ook al niet...

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Zelf een time-out maken, en als het te lang duurt de verbinding verbreken en opnieuw beginnen?

Verwijderd

Topicstarter
Dat heb ik reeds geprobeerd, namelijk op de volgende (niet zo nette :)) manier:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Public Function GetHTMLFile(strURL As String) As String
    
    Dim lngTimeStart As Long
    Dim lngTimeNow As Long
    
    On Error Resume Next

    lngDocSize = 0
    barStatus.SimpleText = "Bezig contact te zoeken met server..."
    intTransfer.Protocol = icHTTP
    
    blnBusy = True
    intTransfer.Execute Trim(strURL), "GET"

    lngTimeStart = Timer
    Do
      DoEvents
      lngTimeNow = Timer
    Loop Until Not blnBusy Or lngTimeNow - lngTimeStart > TIME_OUT
    
    barStatus.SimpleText = ""
    If lngTimeNow - lngTimeStart > TIME_OUT Then
      intTransfer.Cancel
      GetHTMLFile = ""
    Else
      GetHTMLFile = intTransfer.Document
    End If
    
End Function


Private Sub intTransfer_StateChanged(ByVal State As Integer)

    Dim strText As String
    Dim strBuffer As String

    On Error Resume Next
    
    Select Case State

      Case icResponseCompleted:
        Do
            DoEvents

            strBuffer = intTransfer.GetChunk(512)
            strText = strText & strBuffer

            If lngDocSize > 0 Then
              barStatus.SimpleText = "Pagina wordt gedownload..."
            End If
        
        Loop Until Len(strBuffer) = 0
        blnBusy = False
      
      Case icResponseReceived:
        barStatus.SimpleText = "Antwoord van server ontvangen..."
        If lngDocSize = 0 Then
            If Len(intTransfer.GetHeader("Content-Length")) > 0 Then
              lngDocSize = CLng(intTransfer.GetHeader("Content-Length"))
            End If
        End If

    End Select
    
End Sub

Maar dan blijft het programma nog steeds hangen op de regel 'strBuffer = intTransfer.GetChunk(512)'. Het vreemde is ook dat de GUI van het programma gewoon doordraait, maar dat ik de boel wel bruut via de Task Manager moet beëindigen. :(