Cache leeren nach Abfrage von Webservice
-
Guten Morgen zusammen,
ich habe folgendes Problem.
Ich frage via CInternetSession und CHttpFile Daten von einem Webservice ab.CInternetSession mySession("mysession"); CHttpFile* pFile = static_cast<CHttpFile*>(mySession.OpenURL(sUrl.c_str()); DWORD dwRet = 0; pFile->QueryInfoStatusCode(dwRet); if(dwRet == 200) { char szBuf[5000]; ZeroMemory(szBuf, sizeof(szBuf)); //...Daten verarbeiten, kommen in XML Form zurück ... pFile->Close(); delete pFile; pFile = NULL; mySession.Close(); }
Nachdem ich über einen anderen WebService neue Daten hinzugefügt habe stelle ich die Anfrage erneut, bekomme aber die alten Daten zurück.
Kopiere ich den Link meiner Abfrage in den Browser bekomme ich die neusten Daten zurück. Stelle ich nun meine Abfrage nochmal dann bekomme ich ebenso wie beim Neustart die neusten Daten zurück.
Sprich meine erstes Abfrageergebnis scheint im Cache zu landen.
Meine Frage nun wie leere ich den Cache nach jeder verarbeiteten Anfrage?Gruß
Karsten
-
Ok wenn ich zum lesen der Rückgabe Read benutze dann klappt es mit den aktuellen Werten. Da ich aber nie weiß wie groß mein Buffer am Ende sein wird(jetzt schon fast 10480 bytes) hab ich gedacht nimm ReadString dann biste flexibel.
Aber Pustekuchen mit ReadString hab ich wieder mein ursprüngliches Problem.
Ist doch zum k.....
-
Kannst du mir mal bitte das hier erklaeren:
CrazyPlaya schrieb:
delete pFile; pFile = NULL;
Wieso loeschst du pFile und setzt es dann nochmal auf
NULL
?Zum Thema: Gibt's da keine EOF-Abfrage? Weil normalerweise wird sowas mit
OpenStream(Param); while(!EOF) { ReadBuffer ( Buffer, sizeof(Buffer) ); } CloseStream();
geloest. Also so in der Form kenne ich das jedenfalls.
-
Ok mein Fehler.
Hatte die Schleife erst so aus einem Beispiel übernommenwhile(pFile->Read(szBuf,nCount) != -1)
Ist dadurch auf eine Endlosschleife gelaufen
richtiger wäre die Abfrage gewesen mit (> 0) dann klappt es
auch.Löschen von pFile und NULLEN dieses Pointers mach ich da ich
kein Garbage Collection habe und der Speicher nmuss ja freigemacht werden.
Obwohl er ja eigentlich mit Session.Close() auch wieder freigegeben werden müsste.
Aber sicher ist sicher.
Ich brauch Session und pFile nach der Abfrage nicht mehr und
bei einer erneuten Abfrage wird eh alles erneut aufgerufen.Allerdings bleibt das Problem dennoch bestehen das mir die neusten Daten nicht übergeben werden