Probleme mit downloaden eines HTML files (CInternetSession)
-
Hi! Also also ich verstehe das nicht... Ich versuche eine Seite immer UptoDate in einer Variablen zu haben, so rufe ich die unten aufgeführte methode in einer Schleife auf... jedoch wird die Seite nur einmal aktualisiert und ist somit nicht aktuell. Wenn ich aber die Seite die ich runterladen möchte im InternetExplorer öffne und aktualisieren klicke aktualisiert sich die Seite auch in meinem Programm...
hier mein Code
CString getHtmlSource(CString url) { CString somecode, s; CInternetSession session; CInternetFile* file; try { file = reinterpret_cast<CInternetFile*> (session.OpenURL(url)); } catch (CInternetException* m_pException) { file = NULL; m_pException->Delete(); } if(file) { while (file->ReadString(somecode) != NULL) { s = s + somecode; } file->Close(); } session.Close(); delete session; delete file; return s; }
danke schonmal
MfG ExElNeT
-
Vielleicht lädst du die Seite nach einmaligem Laden aus dem Cache des Browsers
oder deines Computers...Devil
-
Versuch mal
session.OpenURL(url, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD);
Vielleicht geht's ja...
Happosai
-
Jo danke 1a!
Aber ich habe noch ne Frage zu dem Thema.... Ist es möglich einen wert an einer bestimmten Position in einer Website auszulesen und diesen in eine variable zu schreiben? Bisher habe ich immer die ganze Site runtergeladen und ihn dann ausgelesen... aber das kostet ziemlich traffic ... kann ich das auch machen ohne die Website runterzuladen und den Wert direkt aus der Site ziehen?
danke MfG
ExElNeT
-
CInternetFile hat doch die Member-Funktion Seek(), mit der Du den Filepointer positionieren kannst. Sofern Du den Offset zu Deinem Wert kennst... kannst Du damit doch direkt zum Wert springen, oder zumindestens in dessen Nähe bevor du mit Deinem Einlesen beginnst !!!
Hoffe das hilft Dir weiter
und das ich keinen Denkfehler drin habe
MfG veganza
[ Dieser Beitrag wurde am 09.11.2002 um 20:38 Uhr von veganza editiert. ]
-
Hi!
Also ich habe jetzt Seek() getestet nur irgendwie bekomme ich nach dem Seek beim lesen eine CInternetException...
mein code:
CString getHtmlSource(CString url) { CString somecode, s; CInternetSession session; CInternetFile* file; try { file = reinterpret_cast<CInternetFile*> (session.OpenURL(url)); } catch (CInternetException* m_pException) { file = NULL; m_pException->Delete(); } if(file) { file->Seek(10, CFile::begin); while (file->ReadString(somecode) != NULL) { s = s + somecode; } file->Close(); } session.Close(); delete session; delete file; return s; }
Kann mir jemand sagen woran das liegen kann? Nach dem Seek ist die Filegröße über file->GetLength() übrigends 0.
danke MfG
ExElNeT
-
kommt schon.... irgendjemand muss doch mal auf dieses problem gestoßen sein.... HILFE!!!!!
-
Also ich lade Dateien immer so runter:
CInternetSession pInetSession; CStdioFile* pNetFile; int nFileSize = 0; int nFileSizeBytes = 0; int nBytesToWrite = 0; CString strFileName, strNewFileName; try { pNetFile = pInetSession.OpenURL(strFileName, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD); nFileSizeBytes = pNetFile->SeekToEnd(); pNetFile->SeekToBegin(); nFileSize = nFileSizeBytes / 1024; strNewFileName = "C:\\" + pNetFile->GetFileName(); CFile pLocalFile(strNewFileName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); while (nBytesToWrite = pNetFile->Read(cReadBuffer, 512)) { pLocalFile.Write(cReadBuffer, nBytesToWrite); } } catch(CInternetException *IE) { CString strError; TCHAR cError[255]; IE->GetErrorMessage(cError, 255); strError = cError; MessageBox(strError); }
Inklusive einiger anderer Schnörkel, die ich aber nicht "verraten" will. Dienen bloß zum Anzeigen des Fortschritts etc.
Happosai
[ Dieser Beitrag wurde am 10.11.2002 um 21:09 Uhr von Happosai editiert. ]
-
Jede Art von Seek funktioniert bei mir nicht... Muss ich noch etwas beachten wenn ich deinem Beispiel folge?
-
definier "funktioniert nicht" mal etwas genauer.
-
jo ok... Also ich rufe Seek oder SeekToBegin oder SeekToEnd auf und danach frage ich die länge des files mit GetLength ab sie ist 0. Die abgefangene CInternetException hat folgende Aussagekraft: ""
hoffe jemand kann mir helfen
MfG
ExElNeT
-
Dann wird das vom Server nicht unterstützt wo du diese Html-Datei runterladen willst.
-
Nunja also ich habe es bei 10 verschiedenen Seiten probiert.... Immer das selbe... Ich weiß nicht was ich noch überprüfen soll...
MfG
ExElNeT
-
Also scheinbar funktioniert Seek() nur bei Files die auf dem Server als Downloadfiles bekannt sind... mit html oder sonstigen files ging es nicht...
Gibt es noch eine andere Möglichkeit den Zeiger innerhalb einer solchen Datei umzusetzen? So dass ich nicht die ganze html seite downloaden muss um einen wert zu erfahren?
danke MfG
ExElNeT