Einzelnen Beitrag anzeigen

Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

[Visual Basic] Datei herunterladen und Cookies verwenden

  Alt 27. Jan 2009, 10:10
Guten Morgen!

Vielleicht kann man mir ja hier helfen

Ich habe die Aufgabe eine Datei von einem Server über http, bzw. https herunterzuladen.
Ich habe dazu die URL, ggf. AUTH Username und AUTH Password, sowie notwendige Cookieinhalte und die dazugehörigen Domains.

Nun kriege ich das leider absolut nicht hin, meiner Funktion ein Cookie zu übergeben. Wie funktioniert das eigentlich?

Mein Code sieht im groben aus aus:
Code:
Private Function DownloadDATANORM(File As oFile) As String
  'Const INET_RELOAD = &H80000000
  Const INTERNET_FLAG_NO_COOKIES = &H80000
  Dim hInet As Long
  Dim hURL As Long
  Dim Buffer As String * 2048
  Dim bytes As Long
  Dim i As Integer
 
  ShowLoading "Folgende Datei wird heruntergeladen:" + vbCrLf + File.FileName
 
  'Cookies setzen
  For i = 0 To UBound(File.Cookies)
    If (File.Cookies(i).Content <> "") Then
      Call InternetSetCookie(File.Cookies(i).Domain, "DATANORM", File.Cookies( _
        i).Content)
    End If
  Next
 
 
  'Verbindung aufbauen
  hInet = InternetOpen("DATANORM Online", OpenType, vbNullString, vbNullString, _
    0)
  hURL = InternetOpenUrl(hInet, File.URL, vbNullString, 0, _
  INTERNET_FLAG_NO_COOKIES, 0)
 
  'Datei herunterladen
  intFileNum = FreeFile
  Open App.Path + "\" + File.FileName For Binary As intFileNum
  Do
    InternetReadFile hURL, Buffer, Len(Buffer), bytes
    If (bytes = 0) Then Exit Do
    Put #intFileNum, , Left$(Buffer, bytes)
  Loop
  'Wieder alles schließen
  Close intFileNum
  InternetCloseHandle hURL
  InternetCloseHandle hInet
 
End Function
Gebe ich eine URL ein, die nicht durch Cookies geschützt ist, funktioniert das einwandfrei... Der Download funktioniert also...

Gebe ich nun aber eine durch Cookies geschützte Datei ein, bekomme ich vom Server nur die Antwort "Fehler" (das ist eine Testumgebung, daher so eine aussagekräftige Fehlermeldung )

Hat da jemand eine Idee?
  Mit Zitat antworten Zitat