Aktuelle Zeit: 19.10.2018 03:32

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: HTML mit Parameterübergabe, Post
BeitragVerfasst: 17.11.2017 07:40 
Offline

Registriert: 23.03.2017 11:05
Wohnort: Kreis RE
Hallo,
wie sich einige sicherlich erinnern, hatte ich seinerzeit zum G20 Gipfel die Kommentierungen auf der Webseite von Anne Will mitgelsen und mir auf der Platte mit eurer Hilfe gespeichert.
Um mich nun weiter mit dem Download von Daten/Deteien aus dem Netz zu beschäftigen, habe ich versucht eine HTML-Seite mit einfachen Parametern abzurufen. Aber ich scheitere schon beim Verständnis, wie das ganze realisiert wird.

Wenn ich z.B. auf der Seite http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld= eine Zugverbindung abfragen möchte, müsste ich eine Zugbezeichnung wie "RE 3285" oder "ALX84137" als Parameter an den Server der Bahn senden.
Wie kann ich jetzt von meinem PC eine Anfrage an den Server der Bahn senden, mit dem ich diesen Parameter übermittle? Habe dazu etwas mit POST gelesen, aber verstehe nicht, wie ich das ganze in ein Programm einbauen kann, bei dem ich mehrere Zugnummern nacheinander abfragen könnte.

Könnte mich jemand vielleicht in die Richtung schubsen, damit ich den Ablauf besser verstehe oder hätte eine kleine Empfehlung für mich?

Vielen Dank schon mal.

ps: den quelltext mit den POST Daten von Nic the Quick habe ich natürlich gefunden, verstehe aber nur Bahnhof.
http://www.purebasic.fr/german/viewtopi ... =8&t=29328

_________________
Inzwischen 58 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor drei Jahren starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 17.11.2017 13:27 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Code:
; Fragt einen Zug der Bahn ab, zeigt die Antwort als Hex oder String-Ansicht und speichert die Antwrot als HTML-Datei.
EnableExplicit
InitNetwork()
Define Leerzeichen$="%20"
Define Zug$="ICE"+Leerzeichen$+"616"
Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
ShowMemoryViewer(*Speicher,MemorySize(*Speicher)) ; Auf String-Ansicht UTF8 umstellen, unten links.
Define Dateiname$=SaveFileRequester("Dateiname:","Zug.html","*.html",0)
Define Datei=CreateFile(#PB_Any,Dateiname$,#PB_UTF8)
If 0=Datei : MessageRequester("Fataler Fehler",Dateiname$+" konnte nicht geöffnet werden.") : End : EndIf
WriteData(Datei,*Speicher,MemorySize(*Speicher))
; Aufräumen
CloseFile(Datei)
FreeMemory(*Speicher)

_________________
PB Spickzettel

Erkenntnisapparat einschalten entscheidet über das einzig bekannte Leben im sichtbaren Universum.
Bitte Frage fragen.
Jürgen Kulow Wersten :D_üsseldorf NRW D Europa Erde Sonnensystem Lokale_Flocke Lokale_Blase Orion-Arm
Milchstraße Lokale_Gruppe Virgo-Superhaufen Laniakea Sichtbares_Universum


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 19.11.2017 16:02 
Offline

Registriert: 23.03.2017 11:05
Wohnort: Kreis RE
Hallo,
das nenn ich mal eine gelungene Überraschung. Komme nicht immer dazu hier täglich hinein zu schauen, mit einem Quelltext hatte ich überhaupt nicht gerechnet. Vielen Dank dafür.
Aber mit bestimmten Zeilen komme ich nicht so ganz klar.
Mit der Anweisung
Code:
Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)

wird offensichtlich die angeforderte Datei in den Speicher geladen, das kann ich noch nachvollziehen, aber die nächste Zeile
Code:
ShowMemoryViewer(*Speicher,MemorySize(*Speicher)) ; Auf String-Ansicht UTF8 umstellen, unten links.

verstehe ich nicht so recht. Ich sehe, dass auf den Speicher zugegriffen wird und eine Anzeige der Informationen im Speicher erfolgt. Nur könnte ich selbst eine solche "Konstruktion" nicht hinbekommen. Gibte es dazu vielleicht noch eine kleine Anleitung oder einen Tipp zum Nachlesen?
Danke vielmals für alle Hilfe.

_________________
Inzwischen 58 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor drei Jahren starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 19.11.2017 21:04 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Hallo proggernewbie,

hier einige hoffentlich hilfreiche Links:
https://www.purebasic.com/german/documentation/debugger/showmemoryviewer.html
http://www.purebasic.com/german/documentation/memory/memorysize.html
http://www.purebasic.com/german/documentation/memory/peeks.html um *Speicher in einen String$ zu kopieren: String$=PeekS(*Speicher,MemorySize(*Speicher),#PB_UTF8)
http://www.purebasic.com/german/documentation/string/findstring.html
https://www.purebasic.com/german/documentation/string/mid.html

CGI leicht gemacht!
CGI-Beispiel-Programme
selfhtml html
Für lokale PureBasic Hilfe kann man mit dem Courser über den Befehl gehen und die F1-Taste drücken.

Im Internet Explorer kann man sich den Quelltext der Reiseauskunft ansehen, 348 Zeilen.
Mit Bearbeiten Suchen Input Weiter findet man dann: trainname, stationname, date, time
In der Antwort der Reiseauskunft würde ich nach ICE suchen.

Viel Spaß beim programmieren, denken, testen und hartneckingen probieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 20.11.2017 07:14 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Nachtrag:
Define Laenge=MemorySize(*Speicher)
ShowMemoryViewer(*Speicher,Laenge)
ist fast das gleiche wie
ShowMemoryViewer(*Speicher,MemorySize(*Speicher))
.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 20.11.2017 08:44 
Offline
Benutzeravatar

Registriert: 29.08.2004 13:29
Die API von bahn.de für den Fernverkehr:

==> http://data.deutschebahn.com/dataset/api-fahrplan

_________________
Windows 10 / Windows 7
PB Last Final / Last Beta Testing


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 26.11.2017 21:55 
Offline

Registriert: 23.03.2017 11:05
Wohnort: Kreis RE
Danke vielmals für den umfassenden Input.

Nur zum Verständnis noch eine weitere Nachfrage:
angenommen, ich wollte mehrere Züge abfragen, deren Zugnummern mir bekannt sind. Diese würde ich dann aus einer Datei auslesen und in den "Suchstring" der URL statt des Strings "616" schreiben. Dabei ist die Übergabe als String keinerlei Problem, sondern ich müsste es nur hinbekommen, diese Werte aus der Datei auszulesen.
Bei einer Folge von Zugnummern, die ich hochzählen wollte, müsste ich jedoch die Zahl in einen String umwandeln, um sie an die URL anhängen zu können.
Ist meine Annahme richtig?
Dann würde aus

Code:
InitNetwork()
for i.l = 1 To 10
Define Leerzeichen$="%20"
Define ZugNr$="616"+ValToStr(i)
Define Zug$="ICE"+Leerzeichen$+ZugNr
Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
ShowMemoryViewer(*Speicher,MemorySize(*Speicher)) ; Auf String-Ansicht UTF8 umstellen, unten links.
Next i
Define Dateiname$=SaveFileRequester("Dateiname:","Zug.html","*.html",0)
Define Datei=CreateFile(#PB_Any,Dateiname$,#PB_UTF8)
If 0=Datei : MessageRequester("Fataler Fehler",Dateiname$+" konnte nicht geöffnet werden.") : End : EndIf
WriteData(Datei,*Speicher,MemorySize(*Speicher))
; Aufräumen
CloseFile(Datei)
FreeMemory(*Speicher)


Wäre das dann so richtig, wobei in diesem Fall aus der Zahl 616 die Zahlen 6161, dann 6162, dann 6163 usw bis 61610 würde?

_________________
Inzwischen 58 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor drei Jahren starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 27.11.2017 12:54 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Hallo proggernewbie,

Code:
EnableExplicit
Define i.l
For i=1 To 10
  Define Zugnr$="616"+Str(i) ; Siehe Hilfe, Allgemeine Libraries und dann String und Str.
  Debug Zugnr$
Next

; 6161
; 6162
; 6163
; 6164
; 6165
; 6166
; 6167
; 6168
; 6169
; 61610

Code:
EnableExplicit
InitNetwork()
Define Zug$=""
Define Daten_vorhanden=#True ; #True steht für wahr und hat den Wert 1.
While Daten_vorhanden        ; Solange Daten vorhanden sind, führe wiederholend die Befehle bis Wend aus.
  Read.s Zug$                ; Lese den Zug aus der DataSection.
  If Zug$="Ende"              ; Wenn der Zug Ende heißt, dann führe die Befehle bis Endif aus.
    Daten_vorhanden=#False    ; #False steht für falsch und hat den Wert 0.
  EndIf
  If Not(Zug$="Ende") ; Wenn der Zug nicht "Ende" heißt dann führe die Befehle bis Endif aus.
    Debug "Zug$:"+Zug$
    Zug$=ReplaceString(Zug$," ","%20") ; Leerzeichen wird durch "%20" ersetzt.
                                       ; Da die Reiseauskunft " " nicht versteht.
    Debug "Zug$:"+Zug$
    Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
    ShowMemoryViewer(*Speicher,MemorySize(*Speicher))
    MessageRequester("Meldung","Zum fortsetzen bitte OK drücken.")
  EndIf
Wend
End
 
DataSection
  Data.s "ICE 616"
  Data.s "IC 2320"
  Data.s "ICE 824"
  Data.s "RE 11217"
  Data.s "IC 2795" ; Achtung fährt nicht täglich, 27. Nov 2017 
  Data.s "ERB89972"
  Data.s "Ende"
EndDataSection

; Mit F9 kann man Haltepunkte setzen z. B. bei while. Nach dem Start stop das Programm am Haltepunkt
; und kann mit wiederholten Tasten F8 schrittweise fortgesetzt werden.

; Zug$:ICE 616
; Zug$:ICE%20616
; Zug$:IC 2320
; Zug$:IC%202320
; Zug$:ICE 824
; Zug$:ICE%20824
; Zug$:RE 11217
; Zug$:RE%2011217
; Zug$:IC 2795
; Zug$:IC%202795
; Zug$:ERB89972
; Zug$:ERB89972

Datei: Zug.txt
Code:
ICE 616
IC 2320
ICE 824
RE 11217
IC 2795
ERB89972

Code:
EnableExplicit
InitNetwork()
Define Daten_vorhanden=#True ; #True steht für wahr und hat den Wert 1.
Define ZugDatei=OpenFile(#PB_Any,"Zug.txt") ; Öffne Datei Zug.txt.
       ; In der Hilfe stehen die Dateifunktionen unter Allgemeine Libraries, File .
If 0=ZugDatei ; Wenn OpenFile eine 0 zurückgegeben hat.
  Daten_vorhanden=#False ; Sind keine Daten vorhanden.
  MessageRequester("Fataler Fehler","Datei Zug.txt konnte nicht geöffnet werden.")
EndIf
Define Zug$=""
While Daten_vorhanden        ; Solange Daten vorhanden sind, führe wiederholend die Befehle bis Wend aus.
  Zug$=ReadString(ZugDatei)  ; Lese einen String aus der ZugDatei. Hilfe wieder unter File.
  If Eof(ZugDatei)            ; Ist das Ende der ZugDatei erreicht? Hilfe wieder unter File.
    Daten_vorhanden=#False    ; Wenn ja, setzte Daten_vorhanden auf falsch.
  EndIf
  Debug "Zug$:"+Zug$
  Zug$=ReplaceString(Zug$," ","%20") ; Leerzeichen wird durch "%20" ersetzt.
                                     ; Da die Reiseauskunft " " nicht versteht.
  Define *Speicher=ReceiveHTTPMemory("http://reiseauskunft.bahn.de/bin/trainsearch.exe/dn?ld=15061&country=DEU&rt=1&trainname="+Zug$)
  ShowMemoryViewer(*Speicher,MemorySize(*Speicher))
  MessageRequester("Meldung","Zum fortsetzen bitte OK drücken.")
  FreeMemory(*Speicher)
Wend
; Aufräumen
CloseFile(ZugDatei) ;Hilfe wieder unter File.
End
 
; Zug$:ICE 616
; Zug$:IC 2320
; Zug$:ICE 824
; Zug$:RE 11217
; Zug$:IC 2795
; Zug$:ERB89972


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 01.12.2017 05:55 
Offline

Registriert: 23.03.2017 11:05
Wohnort: Kreis RE
Hallo Jürgen,
mannomann, ich bin baff.
Das ist so viel für mich, dass ich nach dem ersten Überfliegen alles wieder geschlossen und weggelegt habe. Jetzt beim zweiten und ruhigeren Lesen wird mir allerdings einiges klarer.

Der erste Code definiert Zugnummern und erzeugt sie so, wie ich es in meiner Frage mit dem Zähler beschrieben habe, das ist für mich nachvollziehbar. Auch die Stringkonvertierung, obwohl ich damit schon seit eh und je auf Kriegsfuß stehe. Muss mir das fast jedes Mal wieder suchen. Wusste nicht, dass ich es unter den genannten Punkten "Hilfe -> Allgemein -> String -> Str" so einfach finden kann. Habe bisher immer im Forum danach gesucht.
Der zweite Code liest die Zugdaten aus einer "DataSection" aus. Mit diesem Code komme ich am wenigsten klar. Z.B weiß ich nicht, wie der Zugriff auf die DataSection erfolgt. Ich sehe zwar, dass
Code:
Read.s Zug$                ; Lese den Zug aus der DataSection.

da steht, hätte aber niemals bei Read.s die Verbindung zur Datasection erkannt. Kann mir das bitte noch jemand genauer erklären, wie der Zugriff darauf genau erfolgt?

Die letzten beiden Dateien (Zug.txt und der folgende Code), machen es genau so wie ich es mit dem Auslesen von Zugnummern aus einer Datei meinte. Allerdings wäre ich niemals in der Lage gewesen den Code so hin zu bekommen. Hätte bei mir weder so professionell und elegant noch so kurz ausgesehen.

Vielen Dank für die ausführliche und weitest gehend für mich nachvollziehbare Kommentierung.
Alfons

_________________
Inzwischen 58 Jahre alt.
Leider immer noch keine große Programmiererfahrung; nach Burn-Out vor drei Jahren starke Schwächen mit der Merkfähigkeit.
Körperlich und geistig schreitet der Verfall eben voran.
Trotzdem möchte ich versuchen etwas programmieren zu lernen und bin dankbar für jede Hilfe.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HTML mit Parameterübergabe, Post
BeitragVerfasst: 01.12.2017 09:22 
Offline
Benutzeravatar

Registriert: 22.12.2016 12:49
Wohnort: :D_üsseldorf-Wersten
Hallo Alfons,

HIlfe -> Verschiedene Themen -> Data

Wie kommt man an die in *Speicher stehende Zeile:
ICE 616 München Hbf Dortmund Hbf fährt: 11. Dez 2016 bis 19. Aug 2017; 6. bis 21. Mai 2017 Mo - Fr; nicht 18. Dez 2016, 4. bis 8. Jan 2017, 14., 22., 23. Jan 2017, 9. Mär bis 5. Apr 2017, 15., 16. Jun 2017, 1. Jul bis 13. Aug 2017

html-Code der Zeile im *Speicher:
Code:
<!-- Begin row of train -->
<tr>
<td colspan="10"><div class="separatingLine" style="margin-top:1px; margin-bottom:1px;"><hr style="display:none;" /></div></td>
</tr>
<tr class="buttonTable"><td class="result" valign="middle" style="width:30px;"  nowrap>&nbsp;<img src="http://www.img-bahn.de/v/17102/img_old/a_pic.gif"></td><td class="result" valign="middle"  nowrap>&nbsp;
<a href="http://reiseauskunft.bahn.de/bin/traininfo.exe/dn/929445/548259/278838/170396/80?rt=1&date=&">ICE  616</a>
&nbsp;&nbsp;</td><td class="result" valign="middle"  nowrap>&nbsp;</td><td class="result"><img src="http://www.img-bahn.de/v/17102/img_old/spacer.gif" width="1" height="30"></td>
<td nowrap>&nbsp;&nbsp;M&#252;nchen Hbf&nbsp;&nbsp;</td>
<td class="result"><img src="http://www.img-bahn.de/v/17102/img_old/spacer.gif" width="1" height="30"></td>
<td nowrap>&nbsp;&nbsp;Dortmund Hbf&nbsp;&nbsp;</td>
<td class="result"><img src="http://www.img-bahn.de/v/17102/img_old/spacer.gif" width="1" height="30"></td>
<td>f&#228;hrt: 11. Dez 2016 bis 19. Aug 2017; 6. bis 21. Mai 2017 Mo - Fr; nicht 18. Dez 2016, 4. bis 8. Jan 2017, 14., 22., 23. Jan 2017, 9. M&#228;r bis 5. Apr 2017, 15., 16. Jun 2017, 1. Jul bis 13. Aug 2017</td>
<td class="result"><img src="http://www.img-bahn.de/v/17102/img_old/spacer.gif" width="1" height="30"></td>
</tr><!-- End row of train -->


Jürgen


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: Exabot [Bot] und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  
cron

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye