vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen und Antworten zur vbarchiv.dll
Download einer HTML-PAge geht plötzlich nicht mehr 
Autor: Erdmännchen
Datum: 03.10.08 18:34

Hallo

ich verwende vbArchive.DLL seit langer Zeit um Daten vom Netz herunterzuladen und auszuwerten. Nun geht plötzlich der Zugriff auf eine der Pages nicht mehr. Ich erhalte statt der erwarteten Daten:
UA-Error #1735
 
Bitte wenden Sie sich per E-Mail an info@toppreise.ch
Please write to info@toppreise.ch
Mein Code:
Option Compare Database
Option Explicit
 
Public Declare Function netDownloadFile Lib "vbarchiv.dll" _
                       (ByVal sUrl As String, _
                        ByVal sLocalFile As String, _
                        ByRef pCallbackFunc As Long, _
                        ByRef uTimeoutMillis As Long) As Boolean
 
Sub TestHTMLDownload()
Dim bSuccess As Boolean
  'meine Problemseite
  bSuccess = netDownloadFile("http://www.toppreise.ch/", _
    "D:\HtmlDownload\demo.HTM", 0, 5000)
 
'  'funktioniert
'  bSuccess = netDownloadFile("http://www.oelclick.ch/", 
' "D:\HtmlDownload\demo.HTM", 0, 5000)
 
End Sub
Copy/Paste von "http://www.toppreise.ch" in den Browser bringt die richtigen Daten.

An was könnte das liegen?

Erdmännchen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr 
Autor: ModeratorMartoeng (Moderator)
Datum: 07.10.08 12:49

Um ehrlich zu sein: keine Ahnung.
Ich dachte erst, dass die Seite vielleicht den user-agent abfragt und bei unbekannten blockiert, denn UA-Error wird wohl auch User-Agent-Error heißen.
Beim Testen mit meinem Hermes-HTTP-Tool hat es aber zunächst gut funktioniert.
Hab ich dann den Accept-Header weggelassen hab ich auch den Fehler zurückbekommen. Ich hasse solche Seiten, die den UA auswerten aber nur Fehler generieren, wenn sie ihn nicht kennen.
Also vielleicht wirklich einfach mal ne Mail an diese Seite schreiben, dass sie ihren Server mal ordentlich konfigurieren sollen. An der DLL an sich liegt es nicht. Die gibt natürlich einfach keinen normalen Internet Explorer User-agent an. In einer neuen Version der DLL kann man den User-Agent dann verändern, aber das dauert noch lange bis die rauskommt.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr 
Autor: Erdmännchen
Datum: 08.10.08 13:27

Hallo

Erst mal besten Dank für diese Antwort. Jetzt habe ich schon mal verstanden was das Problem prinzipiell ist.

Da ich mir nicht ganz sicher bin, ob die meien Abfragen schätzen, hab ich bisher erst mal drauf verzichtet direkt zu fragen...

Kleine Frage: übergibst Du denn gar keinen Accept-Header, oder ist der einfach leer? Wenn er leer wäre könnte man ja dort einfach fix IE, Opera oder irgendwas zu übergeben... Das wär doch sicher in allen Fällen besser als gar nichts...

Gibt es ev. ein anderes VB-Tool, das den Download von Pages aus dem Internet beherrscht (Hab schon gesucht und bisher nichts gefunden)? Oder kann ich mir selbst so was basteln? DLL hab ich schon gemacht, aber mit Abruf von Pages aus dem Internet habe ich NULL Erfahrung!

Erdmännchen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr 
Autor: ModeratorMartoeng (Moderator)
Datum: 08.10.08 14:47

Der Witz ist, die DLL nutzt hierbei die internen Funktionen von Windows/IE. Damit bspw. falls es benötigt wird eine Internetverbindung aufgebaut wird. Diesen Funktionen wird dann der User-Agent martoeng-dll übergeben. Accept-header übergeben die Funktionen anscheinend nicht, denn damit hat mein anderes kleines Tool es geschafft, trotz des User-Agent martoeng-dll. Die Antwort des Servers ist einfach nicht HTTP-konform. Ich werde mal eine neue Version der DLL bauen, in der man dann den User-Agent selber setzen kann.
Andere Möglichkeiten gibt es natürlich viele. Man kann selbst die Windows-Funktionen aufrufen (sehr unkomfortabel), das Winsock-Control verwenden, uvm.
Wie dringend ist denn das Problem? Jedes Problem ist für einen selbst natürlich sehr dringend, aber da es nur eine Seite betrifft ist es ja vielleicht nicht soo schlimm einzustufen. Die net-Funktionen der DLL könnte ich dann mal bevorzugt auslagern.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr - eine Lösung 
Autor: Erdmännchen
Datum: 08.10.08 15:31

Für mich schon sehr dringend, weil der Downoad ab dieser Site zur Core-Funktionalität dieses Programmes gehört.

Mein Hauptproblem war, dass die Google-Suche nach URL und Download (und was ich sonst noch alles an Scuhbegriffen probiert habe) kein auswertbares Resultat brachte. So habe ich einmal mehr in den Foren von PowerBasic gesucht (in dieser Sprache hätte ich auch mein Erstatz .DLL geschrieben, falls ich keine Lösung gefunden hätte).

Und siehe da: da war neben Unbrauchbarem auch ein ganz einfaches Beispiel mit einer DLL aus System32: urlmon.dll

Jetzt habe ich einen Ersatz für die Funktion netDownloadFile geschrieben, die nicht vbarchive.dll sondern urlmon.dll aufruft. Callback und Timeout werden nicht unterstützt - aber diese habe ich eh nicht verwendet. Soweit ich das absehen kann, scheint der Download jetzt zu funktionieren.

Erdmännchen


Option Compare Database
Option Explicit
 
'Public Declare Function netDownloadFile Lib "vbarchiv.dll" _
'                       (ByVal sUrl As String, _
'                        ByVal sLocalFile As String, _
'                        ByRef pCallbackFunc As Long, _
'                        ByRef uTimeoutMillis As Long) As Boolean
 
Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" ( _
    ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long
 
Function netDownloadFile(ByVal sUrl As String, _
                        ByVal sLocalFile As String, _
                        ByRef pCallbackFunc As Long, _
                        ByRef uTimeoutMillis As Long) As Boolean
Dim lngRetVal As Long
  lngRetVal = URLDownloadToFile(0, sUrl, sLocalFile, 0, 0)
  If lngRetVal = 0 Then
    netDownloadFile = True
  Else
    netDownloadFile = False
  End If
End Function
 
Sub TestHTMLDownload()
Dim bSuccess As Boolean
  'meine Problemseite
  bSuccess = netDownloadFile("http://www.toppreise.ch/", _
    "D:\HtmlDownload\demo.HTM", 0, 5000)
 
'  'funktioniert
'  bSuccess = netDownloadFile("http://www.oelclick.ch/", 
' "D:\HtmlDownload\demo.HTM", 0, 5000)
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr - eine Lösung 
Autor: ModeratorMartoeng (Moderator)
Datum: 08.10.08 16:31

Ja, die Funktion gibt vermutlich den IE als User Agent an.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Download einer HTML-PAge geht plötzlich nicht mehr - eine Lösung 
Autor: Erdmännchen
Datum: 09.10.08 08:47

Für mich ist das Probelm im Moment so genügend gelöst, auch wenn ich natürlich mit der Lösung nicht so richtig zufrieden bin - ein Providurium halt... Herzlichen Dank auf alle Fälle für Deine Unterstützung!

Ich hoffe Du findest wieder Zeit an der der vbArchive.DLL weiterzuarbeiten - ist ein tolles Stück Code und hat mit schon viel geholfen!

Erdmännchen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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