vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · Sonstiges   |   VB-Versionen: VB4, VB5, VB629.10.01
MSINET: Warten, bis die Datei übertragen wurde

Mit dem Microsoft Internet Transfer Control lassen sich schnell HTTP und FTP-Anfragen an einen Server schicken, aber auf eines sollte man achten...

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  23.573 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Das Microsoft Internet Transfer Control (MSINET.OCX) eignet sich hervorragend für das Downloaden von Webseiten aus dem Internet. Solange man nur eine einzige "Download-Anfrage" startet, ist das auch alles kein Problem. Sollen aber mehrere Anfragen hintereinander ausgeführt werden, so kennen auch Sie sicherlich die Fehlermeldung: Die letzte Anforderung wird noch bearbeitet.

Wir lässt sich dieses Problem nun umgehen?
Ganz einfach - beim Starten der Anfrage über die Execute-Methode wird ein Flag gesetzt. Sobald das MSINET-Control die Anfrage vollständig bearbeitet und die entsprechenden Daten übermittelt hat, wird das Flag wieder zurückgesetzt. Wir brauchen jetzt also nur das Flag innerhalb einer Schleife zu prüfen.

Das nachfolgende Beispiel zeigt, wie sich eine Webseite downloaden lässt. Die weitere Ausführung des Codes wird nun so lange "angehalten", bis die Webseite vollständig geladen wurde. Danach kann dann die nächste Anfrage gestartet werden.

Um das Beispiel auszuprobieren, erstellen Sie ein neues Projekt und fügen über Projekt - Komponenten das "Microsoft Internet Transfer Control" (MSINET.OCX) hinzu. Plazieren Sie auf die Form eine Instanz des MSINET-Controls, ein Textfeld mit der Bezeichnung txtURL, einen CommandButton cmdGO und eine MutliLine-TextBox mit der Bezeichnung txtData.

Jetzt nur noch den nachfolgenden Code einfügen und F5 drücken.

Option Explicit
 
' Datenvariable
Dim sData As String
 
' Anfrage absenden (hier URL laden und Seiten-Quelltext anzeigen)
Private Sub CmdGO_Click()
  Screen.MousePointer = 11
  With Inet1
    sData = ""
    .Tag = "Loading"
    .Execute txtURL.Text
    Do
      DoEvents
    Loop Until .Tag <> "Loading"
 
    If .Tag = "Ready" Then
      ' Anfrage korrekt bearbeitet
      ' Seiten-Quelltext anzeigen
      txtData.Text = sData
    ElseIf .Tag = "Error" Then
      ' Fehler
      MsgBox "Es ist ein Fehler aufgetreten!"
    End If
  End With
  Screen.MousePointer = 0
End Sub
 
' MSINET - Status abfragen
Private Sub Inet1_StateChanged(ByVal State As Integer)
  Dim vData As Variant
  Dim bReady As Boolean
 
  With Inet1
    Select Case State
      Case icError
        ' Es ist ein Fehler aufgetreten
        .Tag = "Error"
      Case icResponseCompleted
        ' Segment holen
        vData = .GetChunk(1024, icString)
        DoEvents
 
        Do
          sData = sData & vData
          ' Nächstes Segment holen
          vData = .GetChunk(1024, icString)
          DoEvents
 
          If Len(vData) = 0 Then bReady = True
        Loop Until bReady
        .Tag = "Ready"
     End Select
   End With
End Sub

Dieser Tipp wurde bereits 23.573 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel