HTTP-Download (paritial get, Head, unbekannte Dateigröße,...

Für allgemeine Fragen zur Programmierung mit PureBasic.
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Das disconnect-erkennung läuft dann nicht, aber die eigentlich netzwerk-funktion sind ja PB-Interne. die API_ lassen sich auf einfache Datei-Routinen ummünzen.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

wenn ich einen Download abbreche schreibe ich einfach nur den HTTP_CloseURL(Get) Befehl, oder?

Bei mir meckert nämlich Windows (wenn ich se lösch), dass die Datei noch in Verwendung is.
Muss ich die Datei auch noch schließen? Bspw. über CloseFile()?
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Noch ein Problem:
Ich hab eine Window-Anwendung, und hab den Bsp.-Code, den du zuletzt gepostet hast versucht zu portieren.
Wenn alles heruntergeladen wurde kommt die Fehlermeldung (im Debugger), dass die NetworkConnectionID = 0 sei.

Hier mein Testcode, in der Include download.pbi sind die ganzen Funktionen von dir.

Code: Alles auswählen

IncludeFile "download.pbi"

Enumeration
#Window
#Progressbar
#Button_Submit
#Button_Abort
EndEnumeration

Procedure Window()
  If OpenWindow(#Window, 0, 0, 300, 55, #PB_Window_TitleBar | #PB_Window_ScreenCentered, "GetIt")
    If CreateGadgetList(WindowID())
      ProgressBarGadget(#Progressbar, 5, 5, 290, 20, 0, 100)
      ButtonGadget(#Button_Abort, 5, 30, 85, 20, "Abbrechen")
      ButtonGadget(#Button_Submit, 210, 30, 85, 20, "Download")
    EndIf 
  EndIf
EndProcedure

Window()
DoingDownload = #False
InitNetwork()
While WindowEvent() <> 0 : Wend

Repeat

  If DoingDownload : Event = WindowEvent()
  Else : Event = WaitWindowEvent() : EndIf
  
  Select Event
    Case #PB_Event_CloseWindow
      If DoingDownload = #True : HTTP_CloseURL(Get2.HTTPGetId) : DoingDownload = #False : CloseWindow(#Window) : Break
      Else : CloseWindow(#Window) : Break : EndIf
          
    Case #PB_Event_Gadget
      Select EventGadgetID()
        Case #Button_Abort
          If DoingDownload = #True : HTTP_CloseURL(Get2.HTTPGetId) : DoingDownload = #False : DisableGadget(#Button_Submit, 0)
          Else : CloseWindow(#Window) : Break : EndIf
        
        Case #Button_Submit
          If HTTP_OpenUrl(Get2.HTTPGetId,"C:\test.zip","http://www.sedtech.com/isedquickpdf/downloads/4.35/iSQP0435DLL.zip","","",0,"",1024)
            SetGadgetState(#Progressbar, 0) : DisableGadget(#Button_Submit, 1) : DoingDownload = #True
          EndIf
      EndSelect
  EndSelect
  
  If DoingDownload
  If HTTP_ReceiveData(Get2)
    SetGadgetState(#Progressbar, HTTP_GetProgress(Get2))
  Else
    DoDownload = #False
    DisableGadget(#Button_Submit, 0)
    HTTP_CloseURL(Get2) 
  EndIf
  Delay(10)
EndIf
ForEver

Die Datei ist übrigens vollständig heruntergeladen.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Code: Alles auswählen

If DoingDownload 
    If HTTP_ReceiveData(Get2) 
      Debug "*"+Str(HTTP_GetFileReceived(Get2))
      SetGadgetState(#Progressbar, HTTP_GetProgress(Get2)) 
      
    Else 
      Debug "-"
      DoingDownload = #False 
      DisableGadget(#Button_Submit, 0) 
      HTTP_CloseURL(Get2) 
    EndIf 
    Delay(10) 
  EndIf 
Doingdownload nicht dodownload!

Die Datei sollte eigentlich geschlossen werden, was bei mir auch passiert (das mit http_closeurl())
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

muchas gracias signor
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Du solltest aber auch kontrollieren, ob ein Fehler passiert ist, etc. Momentan gehst du einfach davon aus, das alles ok ist.

Das größte Problem in Sachen Multitasking ist allerdings das OpenNetworkConnection(). Sollange der Server gesucht wird, ist das Program angehalten. Das dauert bei guter Verbindung gottseidank nicht lange...

p.s.: Wenn du japbe hast und die aktuelle Beta updatest: Das Include HTTP.pbi ist der oben gepostete code.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

die Fehlersuch-Routine wollt ich noch einbauen...
ich benutze zwar jaPBe (übrigens saugeil! :allright: ) aber momentan nicht die aktuelle Version *zu-faul-bin*
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

bluejoke hat geschrieben:die Fehlersuch-Routine wollt ich noch einbauen...
ich benutze zwar jaPBe (übrigens saugeil! :allright: ) aber momentan nicht die aktuelle Version *zu-faul-bin*
die RAR downzuloaden und auf Update zu klicken?
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

jep...


nöö, du kennst doch sciher den Grundsatz: "Never change a running system"
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
guruk
Beiträge: 45
Registriert: 18.08.2005 16:14
Wohnort: Egypt / Red Sea / South Sinai / Dahab
Kontaktdaten:

Re: HTTP-Download (paritial get, Head, unbekannte Dateigröße

Beitrag von guruk »

HAllo GPI,
cooler Code,

ich wuerde ihn gerne verwenden, jedoch fuer die Seite welche ich aufrufe (ist eine LoginSeite) muesste es Cookies verarbeiten.

Hast Du dazu noch ne kleine Routine?

Bekomme jetzt immer: Login nicht moeglich, Ihr Browsre muss Cookies akzeptieren.

Greets
chris
Antworten