Seite 1 von 1

URLDownloadToCacheFile funzt mit PB4 nicht richtig

Verfasst: 04.08.2006 19:34
von Thorium
Normalerweise sollte die Funktionsweise einer Win-API-Funktion ja völlig unabhängig der verwendeten Programmiersprache sein. Leider musste ich gerade das gegenteil feststellen. :?

Es geht um URLDownloadToCacheFile. Diese Funktion funktioniert in PB4 nur wenn eine Datei in der URL angegeben wird, z.b. Index.htm. Gebe ich diese nun nicht an schlägt die Funktion fehl. Das sollte sie aber eigentlich nicht. Unter VB6 funktioniert die selbe Funktion ohne Probleme.

Weiß einer von euch Rat, würde lieber mit PB4 als mit VB6 arbeiten.

PB4-Code funktioniert nicht

Code: Alles auswählen

Define.l Result
Define.s URL,CacheFileName

URL = "http://sv.h774874.serverkompetenz.net/"

DeleteUrlCacheEntry_(URL)
CacheFileName = Space(1024)

Result = URLDownloadToCacheFile_(0,URL,CacheFileName,1024,0,0)
MessageRequester(Str(Result),CacheFileName)
VB6-Code funktioniert

Code: Alles auswählen

Private Declare Function URLDownloadToCacheFile Lib "urlmon.dll" Alias "URLDownloadToCacheFileA" (ByVal lpUnkcaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwBufLength As Long, ByVal dwReserved As Long, ByVal IBindStatusCallback As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" (ByVal lpszUrlName As String) As Long

Private Sub Command1_Click()
Dim URL As String
Dim CacheFileName As String
Dim Result As Long

URL = "http://sv.h774874.serverkompetenz.net/"
DeleteUrlCacheEntry URL
CacheFileName = Space(1024)
Result = URLDownloadToCacheFile(0, URL, CacheFileName, 1024, 0, 0)

MsgBox CacheFileName, vbOKOnly, Format(Result)

End Sub

Verfasst: 08.08.2006 16:55
von jpd
Hi Thorium,

so wie ich verstehe gibt es die möglichekeit das cache des IE abzuschalten
wenn du überprüfst
URL = "http://sv.h774874.serverkompetenz.net/"

im quelltext der seite sind folgende einträge:

Code: Alles auswählen

<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
dies bedeutet das dein beispiel eigentlich funktioniert,
wenn du zum beispiel anstatt
URL = "http://sv.h774874.serverkompetenz.net/"
die adresse:
URL = "http://www.purearea.net"
dann bekommst'du die von dir gewünschte ergebnisse.

Ciao
jpd

anbei ein paar nützliche link zur beschreibung:

How to prevent web page caching (for site administrators and authors)
Please have a look at this link:

HOWTO: Prevent Caching in Internet Explorer [Q234067]
http://support.microsoft.com/default.as ... US;Q234067

Also of interest is:

"Pragma: No-cache" Tag May Not Prevent Page from Being Cached [Q222064]
http://support.microsoft.com/default.as ... US;Q222064

HOWTO: Prevent Caching in Internet Explorer [Q234067]
http://support.microsoft.com/default.as ... US;Q234067

HOW TO: Prevent Web Caching [Q311006]
http://support.microsoft.com/default.as ... US;Q311006

Verfasst: 08.08.2006 21:54
von Thorium
Das macht natürlich Sinn, was du da sagst.
Allerdings erklärt das nicht warum es mit VB6 trotzdem geht. :?

Verfasst: 10.08.2006 23:17
von jpd
Thorium hat geschrieben:Allerdings erklärt das nicht warum es mit VB6 trotzdem geht. :?
gute frage!

habe ein bissiehn gesucht...

du verwendest: URLDownloadToCacheFileA
habe dieser mit URLDownloadToCacheFileW ersetzt

dann funktioniert dein code unter vb auch nicht.

da in pb URLDownloadToCacheFile_ verwendet wird

ist nicht direkt ersichtlich welche der "ansi/unicode" verwendet wird...



habe dann versucht über api direkt die funktionen einzeln anzusprechen ...

aber ich glaube das ich nicht ganz sauber diese umgesetzt habe.

ergebniss in meinen test ....

...wieso kann VB die seiten trotzdem runterladen auch wenn diese seite einen no-cache flags gesezt hat?

JPD

Code: Alles auswählen

Define.l Result 
Define.s URL,CacheFileName 
#urlmon=1
 
URL = "http://sv.h774874.serverkompetenz.net/" 
DeleteUrlCacheEntry_(URL) 
CacheFileName = Space(1024) 
basedll.l = OpenLibrary(#urlmon,"urlmon.dll")
Debug "basedll: " +Str(basedll)
  If basedll <> 0
    result=CallFunction(#urlmon,"URLDownloadToCacheFileA",0,URL,@CacheFileName,Len(CacheFileName),0,0))
  EndIf
  CloseLibrary(#urlmon)

Debug CacheFileName
Debug result

Handling Hyperlink Errors

Verfasst: 11.08.2006 18:35
von jpd
auf dieser seite befinden sich die return code das die pb routine
beim ansprechen der seite ausgibt.


  • Decimalerror number Hexadecimalerror number Description
    – 2146697214, – 2147221020 and – 2147012891 0x800C0002, 0x800401E4 and 0x80072EE5 The address of this site is not valid. Check the address and try again.

http://msdn.microsoft.com/archive/defau ... eb/015.asp

Re: Handling Hyperlink Errors

Verfasst: 11.08.2006 21:00
von Thorium
jpd hat geschrieben:auf dieser seite befinden sich die return code das die pb routine
beim ansprechen der seite ausgibt.


  • Decimalerror number Hexadecimalerror number Description
    – 2146697214, – 2147221020 and – 2147012891 0x800C0002, 0x800401E4 and 0x80072EE5 The address of this site is not valid. Check the address and try again.

http://msdn.microsoft.com/archive/defau ... eb/015.asp
Hm, äusserst merkwürdig. Ich werde mal nach anderen Möglichkeiten auschau halten.

Verfasst: 14.08.2006 10:12
von jpd
Hallo Thorium,
ich bin von natur aus sehr neugierig, entschuldige!

hier ein link mit ein c++ programm das URLDownloadToCacheFile benutzt
http://www.codeguru.com/code/legacy/int ... lfile2.zip

Download a File Using URLDownloadToCacheFile

http://www.codeguru.com/cpp/i-n/interne ... php/c3467/


auch mit diesen beispiel wird von der url nicht runtergeladen.



Ciao

jpd