Ankündigung

Einklappen
Keine Ankündigung bisher.

.xml Daten empfangen u. auswerten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    .xml Daten empfangen u. auswerten

    Hi Profi's

    Also ich hab gerade ein kleines Projekt abgeschlossen und jetzt gilt es mir
    ein neues Themengebiet zu erschließen...

    Ich möchte mir jetzt für den EibPC bzw. dessen Visu einen kleine Newsseite
    bauen (nein nicht über "plink" oder ähnliches)...

    dazu will ich ähnlich wie beim Googleweather Macro eine xml Seite aufrufen bzw. diese empfangen und die Daten darin auswerten.. Momentan häng ich noch beim abrufen... (also direkt am Start)...

    Vielleicht kann mir der ein oder andere mal einen Tipp geben wie das funktioniert...

    Bisher hab ich folgendes:

    (wie ihr vielleicht seht.. ordentlich beim Googleweahter geklaut. )

    [highlight=epc]
    :begin XMLAbfr(Name,Refresh)
    :info $News Abfrage... bla bla bla... Name des Macros + Zeit nach wieviel Minuten aktualisiert werden soll$\\
    $Name$\\
    $nach wieviel Minuten soll refreshed werden$
    :shortinfo $News abfrage$

    // News Es kommen 2 TCP Pakete an??
    XMLAbfr_Name_xmlText=$$
    XMLAbfr_Name_xmlText_Data1=$$
    XMLAbfr_Name_xmlText_Data2=$$
    XMLAbfr_Name_xmlCount=0

    XMLAbfr_Name_Port=0u16
    XMLAbfr_Name_IP=0u32
    XMLAbfr_Name_XMLAbfrPort = 80u16
    XMLAbfr_Name_XMLAbfrIP = 0u32

    Startabfrage=AUS

    if after(Systemstart(),10000u64) then Startabfrage = EIN endif

    // TCP Verbindung aufmachen
    if (Startabfrage == EIN) then {
    XMLAbfr_Name_XMLAbfrIP=resolve($http://www.spiegel.de$)
    }endif
    if after(Startabfrage == EIN,600u64) then {
    connecttcp(XMLAbfr_Name_XMLAbfrPort,XMLAbfr_Name_X MLAbfrIP)
    } endif

    // TCP Anfrage schicken
    if (after(Startabfrage,1000u64) == EIN) then {
    sendtcp(XMLAbfr_Name_XMLAbfrPort,XMLAbfr_Name_XMLA bfrIP,$GET http://www.spiegel.de/schlagzeilen/tops/index.rss$,0x0D,0x0A,0x0D,0x0A)
    }endif


    // Es kommen 2 Pakete an ???
    if event(readtcp(XMLAbfr_Name_Port,XMLAbfr_Name_IP,XM LAbfr_Name_xmlText)) and XMLAbfr_Name_IP == XMLAbfr_Name_XMLAbfrIP then {
    if (XMLAbfr_Name_xmlCount==0) then XMLAbfr_Name_xmlText_Data1=XMLAbfr_Name_xmlText endif;
    if (XMLAbfr_Name_xmlCount==1) then XMLAbfr_Name_xmlText_Data2=XMLAbfr_Name_xmlText endif;
    XMLAbfr_Name_xmlCount=XMLAbfr_Name_xmlCount+1
    }endif

    // TCP Verbindung wieder ordentlich schließen
    if after(Startabfrage,10000u64) then {
    closetcp(XMLAbfr_Name_Port,XMLAbfr_Name_IP)
    } endif
    :end


    [/highlight]

    Hab das auch noch mit den zwei TCP Pakten drin gelassen... ich denk das wird bei der Newsseite nicht der Fall sein, das dort zwei Pakete ankommen.. aber gut..

    Wie erkenn ich eigentlich wieviele Pakete ankommen (Wireshark ??)

    der String der ausgegeben wird sieht zuerst so aus:

    HTTP/1.0 404 Not Found Content-Type: text/html; charset=UTF-8 X-Content-Type-Opt

    heißt wohl... findet die Seite nicht, oder ???

    Wie gesagt.. für Tipps und Tricks.. bin ich sehr Dankbar !!

    Gruß Martin

    EDIT 12:35... des sagt das Meldungsfenster im Eibstudio:
    % Wert: HTTP/1.0 404 Not Found Content-Type: text/html; charset=UTF-8 X-Content-Type-Options: nosniff Date: Wed, 11 Jul 2012 10:21:55 GMT Server: sffe Content-Length: 958 X-XSS-Protection: 1; mode=block <!DOCTYPE html> <html lang=en> <meta charset=utf-8> <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"> <title>Error 404 (Not Found)!!1</title> <style> *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px }body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}} </style> <a href=//www.google.com/><img src=//www.google.com/images/errors/logo_sm.gif alt=Google></a> <p><b>404.</b> <ins>That s an error.</ins> <p>The requested URL <code>/schlagzeilen/tops/index.rss</code> was not found on this server. <ins>That s all we know.</ins>

    hab da mal was rot markiert.. !!
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    #2
    soweit ich das auf die Schnelle richtig überblicke, versuchst Du d facto die Seite http://www.google.com/schlagzeilen/tops/index.rss aufzurufen, also nciht auf Spiegel.de

    Hast Du evtl. die gleichen Variablennamen wie beim Google Makro und die überschrieben sich gegenseitig?

    Die XMLAbfr_Name_XMLAbfrIP aktualisierst DU ja nur einmalig bei Systemstart
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Hi.. eigentlich hab ich die Variablen alle umbenannt.. in XMLAbfr...

      somit sollte das eigentlich nicht passieren...

      die XMLAbfr_Name_XMLAbfrIP refreshe ich jetz immer nach der im Macro hinterlegten Refreshzeit.. (das hatte ich vorhin noch nicht drin)..
      also after(systemstart(),10000u64) or cycle(refresh,00)....

      muss mal schaun, wo das mit dem Google herkommt... könnte ja mal auch übergangnsweiße das Googlemakro rausschmeißen.. !!

      Gruß Martin
      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

      Kommentar


        #4
        hmmmm....

        aber die Fehlermeldung ist defintiv von der Google-Seite.
        ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

        Kommentar


          #5
          Hi Martin,

          Du solltest Dir zunächst erstmal genau anschauen, was der Server von Dir erwartet. Ein http GET ist da ziemlich genau festgelegt:

          Code:
          GET [COLOR=#8a0808]/schlagzeilen/tops/index.rss[/COLOR] HTTP/1.1 Host: www.spiegel.de
          Und dann reicht das "alte" Google Weather Makro nicht aus. Das ist nur was für Schönwetter-Netzwerke weil es davon ausgeht, das alles immer klappt. Das tut es in der realen Welt nicht also mach Dir Gedanken um eine Zustandsverwaltung Deiner Verbindung...

          Gruß,
          Bernd

          Kommentar


            #6
            Zitat von bmx Beitrag anzeigen
            ... Das tut es in der realen Welt nicht also mach Dir Gedanken um eine Zustandsverwaltung Deiner Verbindung...

            Gruß,
            Bernd

            ähmm... ok.. könntest du mir erkären was du damit meinst ???
            offensichtlich übersteigt das dann doch meinen Horizont

            Gruß Martin
            Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

            Kommentar


              #7
              Naja, schauen wir mal:

              Beispiel:
              // TCP Verbindung aufmachen
              if (Startabfrage == EIN) then {
              XMLAbfr_Name_XMLAbfrIP=resolve($http://www.spiegel.de$)
              }endif
              if after(Startabfrage == EIN,600u64) then {
              connecttcp(XMLAbfr_Name_XMLAbfrPort,XMLAbfr_Name_X MLAbfrIP)
              } endif

              Es wird hier nicht geprüft, ob sich auf resolve() -- was ja asynchron arbeitet -- tatsächlich eine IP-Adresse ergibt und dann wir munter ein connect gestartet.
              Aber auch hier wird kein Rückgabewert abgefragt sondern darauf vertraut, das der connect schon klappt.

              Im folgenden wird einfach ohne abzuwarten, ob die Verbindung auch steht ein Paket geschickt:
              // TCP Anfrage schicken
              if (after(Startabfrage,1000u64) == EIN) then {
              sendtcp(XMLAbfr_Name_XMLAbfrPort,XMLAbfr_Name_XMLA bfrIP,$GET http://www.spiegel.de/schlagzeilen/tops/index.rss$,0x0D,0x0A,0x0D,0x0A)
              }endif

              Der String für GET ist auch nicht korrekt, siehe HTTP GET Protokoll.

              Den Rest kann man sich dann überlegen, wenn es bis hierher geklappt hat.

              Gruß,
              Bernd

              Kommentar

              Lädt...
              X