HTML aus-/einlesen - ich komme nicht weiter



  • Hallo!

    Nachdem ich tagelang das gesamte INet durchsucht habe, poste ich jatzt mal hier eine Frage....

    Ich möchte für meine G15 (Tastatur mit LCD) ein Applet in C++ schreiben, das verschiedene Links parst und gesuchte Infos darstellt. Z.B. Heise-News, Sport-Ergebnisse oder eBay-Artikel.
    Das Ganze ist für mich der Einstieg in C++ (Java ist kein Problem).

    Mit Hilfe in einem G15-Forum bin ich auch schon auf Code gekommen:

    string htmlContent; // Speicher fr den Dateiinhalt
    
       wstring l_urlAlsWString = convertStringToWstring(p_url);
       LPCTSTR url(l_urlAlsWString.c_str());
       LPCTSTR tmpFile = TEXT( "index.html" );
       HRESULT tmpRes = URLDownloadToFile(NULL, url, tmpFile, 0, NULL );
    
       if( tmpRes == S_OK ) {
          cout << "Datei wurde geladen." << endl;
          string dateiname = "index.html";
          ifstream fin;
          fin.open( dateiname.c_str(), ios_base::in );
          if( !fin ) {
             // Falls beim ffnen ein Fehler augetreten ist :
             cout << "Datei konnte nicht gelesen werden" << endl;
          } else {
             char c; // temporrer Speicher fr einzelne Zeichen
             while( !fin.eof() ) {
                fin.get( c ); // ein zeichen vom Stream (Datei) lesen
                htmlContent += c; // und an den Inhalt hngen
             }
             fin.close(); // Datei schliessen
          }
       }
    
       return htmlContent;
    

    Mein Problem ist, daß ich zum einen dort noch Sonderzeichen anstatt von Umlauten habe (eigentlich auch à statt SPACE, was aber wohl an meiner Testumgebung gelegen hat) und vor allem, daß dder Code anscheinend eine URL mit '.htm(l)' braucht. www.heise.de z.B. funktionieren nicht.

    Kann mir jemand dabei helfen?!
    Es kann auch alternativer Code sein. Wichtig ist nur, daß ich Visual Studio C++ Express benutze und daher keine MFC benutzen kann.

    THX! *hoffnungsvoll*



  • Da ist immer ein index.htm(l) dahinter.
    http://www.heise.de/index.html



  • Da ist immer ein index.htm(l) dahinter.

    Ist es leider nicht. Wenn die Seiten per bsw. php zusammengebaut werden, dann funktioniert ein Anhängen von '.html' z.B. nicht und einen Link auf einen eBay-Artikel kann man damit auch nicht lesen.



  • Hat denn keine eine Lösung?! Es muß doch jemanden geben, der sich Daten aus dem INet besorgt?!? 😕



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • www.heise.de geht nicht aber http://www.heise.de geht



  • So, nicht persönlich nehmen!

    - Heise antwortet an der Stelle kein php, zumindest nicht mit den damit oftmals verbundenen Eigenheiten der URL
    - http://www.heise.de geht NICHT:

    Fehler beim Lesen der Datei:-2147221020

    Evtl. klappt das mal, weil der Browser mein, ein index.html dranhängen zu mnüssen, aber auch das ist wohl eher unwahrscheinlich, weil den Job normalerweise der Server übernimmt.

    Un mit eBay-Artikeln gehts bsw. erstrechtr nicht!



  • evtl. kann die libcurl das: http://curl.haxx.se/



  • teste mal bei dir

    std::cout << URLDownloadToFile(NULL, L"http://www.heise.de", L"C:\\index.html", 0, NULL);
    

    bei mir funzt das (0 wird ausgegeben und Datei hat den richtigen Inhalt)



  • Hmmm, bei mir kommt nur:
    -2147221020.

    Das kenne ich irgendwie! 😡

    ------------

    cURL habe ich auch schon gesehen, bin dazu aber scheinbar zu dämlich. Ohne Beispielcode komme ich da definitiv nicht weiter.



  • So, jetzt mal etwas neues.... dieses Thema habe ich dank des Sockets-Tutorials erledigt.
    Ich habe aber jetzt herausgefunden, dass meine Daten anscheind mit Codepage 437 geschrieben wird. Deshalb habe ich bei eBay bsw. 'A0' anstelle eines ' ' an einigen Stellen stehen.
    Ich habe im Moment ein Brett vor dem Kopf (das mit dem Suchen hier im Forum immer breiter wird': Wie bekomme ich denn jetzt die Sonderzeichen weg, sprich ISO 8859-1 gesetzt (das steht in der HTML)?!?!


Anmelden zum Antworten