Waschi Geschrieben 20. Juli 2007 report Teilen Geschrieben 20. Juli 2007 Eine Frage an Programmiererfahrene. Ich verwalte meine Cache in Access. Neue CH-Cache lese ich mit dem GPX-File ein, welches von E-SpArk zur Verfügung gestellt wird. Recht herzlichen Dank für den Service. Das Problem ist jedoch der Update. In VBA verwende ich die Function: Public Declare Function URLDownloadToFile Lib "urlmon.dll" _ Alias "URLDownloadToFileA" ( _ ByVal pCaller As Long, _ ByVal szURL As String, _ ByVal szFileName As String, _ ByVal Reserved As Long, _ ByVal fnCB As Long) _ As Long welche ich mit retVal = URLDownloadToFile(0, URL, strTempFile, 0, 0) aufrufe. Es wird eine Datei gespeichert, welche ich dann einlesen kann. Das Problem ist jedoch, dass ich eine HTML-Seite speichere, in der ich nicht eingeloggt bin und einige Daten fehlen. Weiss jemand, wie ich das machen kann, dass die Seite im eingeloggtem Zustand gespeichert wird. Ich behelfe mich vorläufig damit, dass ich im Firefox mit Rechtsklick auf der Seite die Seite speichere und dann diese Datei einlese. Ich vermute, dass die meisten mit anderen Programmiersprachen arbeiten. Vielleicht kommt doch ein Tipp raus, was ich Grundsätzlich anderes machen muss. Schon mal besten Dank für Eure Antworten. Noch was. Wenn ich in Firefox bei GC eingeloggt bin, kann ich weitere GC-Seiten aufmachen und bin auf diesen immer auch eingeloggt. Nur wenn ich die Seite via VBA-Programm aufmache (oben erwähnte Function) bin ich nicht eingeloggt. Gruss Waschi Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Algorithmus Geschrieben 21. Juli 2007 report Teilen Geschrieben 21. Juli 2007 Grüezi Waschi, Im Borland CBuilder verwende ich zur Anmeldung eine Konstruktion wie: int pos = HTTP->Header.Pos("ASP.NET_SessionId="); MainForm->session_id = HTTP->Header.SubString(pos+18, 24); URLENC->InputString = lese_viewstate(); poststring = "__VIEWSTATE=" + URLENC->Encode + "&myUsername=" + anmeldename + "&myPassword=" + anmeldepw + "&Button1=Login"; ... HTTP->Post(http_befehl, poststring); Aus dem Header (=Kopf) der HTML-Seite von geocaching.com lese ich die (mir zugeteilte) SessionId und das Feld viewstate aus und baue diese neu zusammen mit Anmeldename und Passwort. Die weiteren Zugriffe benutzen diesen Header und das funktioniert (zu meinem Erstaunen). Weil ich die Zugriffe mit voller Anmeldung und als Premium Member durchführe, erhalte ich auch archivierte Caches - anstatt Werbung. Das ist aber C++-isch, wie das auf VBA-isch lauten muss, weiss ich nicht. Im Browser selbst werden Cookies ((un)heimliche Dateien) angelegt, um die Anmeldedaten von Zugriff zu Zugriff aufzubewahren. Vielleicht hat jemand einen C++ - VBA - Übersetzer. Algorithmus Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Waschi Geschrieben 22. Juli 2007 Autor report Teilen Geschrieben 22. Juli 2007 Besten Dank für die Antwort. Wenn ich ins Swissgeocache-Forum gehe, bin ich mit folgendem Aufruf im Brower "http://forum.swissgeocache.ch/login.php?username=Waschi&userpw=xxxxxxxx" immer gleich eingeloggt. Ich stelle mir vor, dass das in Geocaching auch gehen könnte, nur weiss ich die genaue Syntax nicht. Aus dem Header (=Kopf) der HTML-Seite von geocaching.com lese ich die (mir zugeteilte) SessionId und das Feld viewstate aus und baue diese neu zusammen mit Anmeldename und Passwort. Frage: Aus welcher Seite liest Du diese Informationen raus? poststring = "__VIEWSTATE=" + URLENC->Encode + "&myUsername=" + anmeldename + "&myPassword=" + anmeldepw + "&Button1=Login"; Das ist schon mal ein guter Ansatz Wenn ich weiss, wo ich die Daten (obige Frage) her bekomme, mach ich mal hier weiter. Sonst versuche ich es noch mit den Cookies, weiss aber nicht, ob das geht. Gruss Waschi Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Algorithmus Geschrieben 22. Juli 2007 report Teilen Geschrieben 22. Juli 2007 Frage: Aus welcher Seite liest Du diese Informationen raus? Da habe ich etwas Wichtiges unterschlagen! http_befehl = "http://www.geocaching.com/login/default.aspx"; ... HTTP->Get(http_befehl); Algorithmus Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Gast tofse Geschrieben 9. April 2008 report Teilen Geschrieben 9. April 2008 Hallo Algorithmus, ich versuche gerade, das mit PHP hinzubekommen. Klappt leider noch nicht. Du schreibst, dass du Session und viewstate zusammenbaust. In deinem Poststring finde ich aber die Session nicht. Wie übergibst du diese ? Verwendest du dann bei jedem Zugriff deinen poststring, also jedesmal ein Login, wenn du einen Cache suchst ? Danke und Grüße Christof Im Borland CBuilder verwende ich zur Anmeldung eine Konstruktion wie: int pos = HTTP->Header.Pos("ASP.NET_SessionId="); MainForm->session_id = HTTP->Header.SubString(pos+18, 24); URLENC->InputString = lese_viewstate(); poststring = "__VIEWSTATE=" + URLENC->Encode + "&myUsername=" + anmeldename + "&myPassword=" + anmeldepw + "&Button1=Login"; ... HTTP->Post(http_befehl, poststring); Aus dem Header (=Kopf) der HTML-Seite von geocaching.com lese ich die (mir zugeteilte) SessionId und das Feld viewstate aus und baue diese neu zusammen mit Anmeldename und Passwort. Die weiteren Zugriffe benutzen diesen Header und das funktioniert (zu meinem Erstaunen). Weil ich die Zugriffe mit voller Anmeldung und als Premium Member durchführe, erhalte ich auch archivierte Caches - anstatt Werbung. Das ist aber C++-isch, wie das auf VBA-isch lauten muss, weiss ich nicht. Im Browser selbst werden Cookies ((un)heimliche Dateien) angelegt, um die Anmeldedaten von Zugriff zu Zugriff aufzubewahren. Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Algorithmus Geschrieben 9. April 2008 report Teilen Geschrieben 9. April 2008 Grüezi Christof, Die Session-ID wird vom Cookie verwaltet, die brauche ich im Programmcode selbst nicht. Cookies müssen aber zugelassen werden. Diese Anmeldung mache ich einmalig vor dem Datenzugriff. Da ist zu beachten, dass die zugeteilte Session-ID nach einigen Minuten abläuft, wenn kein Zugriff bei www.geocaching.com damit gemacht wird. Dann muss eine neue Anmeldung ausgeführt werden und es wird eine neue Session-ID zugeteilt. Dies ist nötig, wenn das Programm nach der Anmeldung bis zum ersten Datenzugriff eine längere Verarbeitung ausführt, z.B. zuerst bestehende Daten sortiert oder im Debugger stehen bleibt. Gruss Algorithmus Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden