Domino 9 und frühere Versionen > ND7: Entwicklung

URLDownloadToFile() lädt nur, wenn Website zuvor geöffnet wurde

(1/9) > >>

Silke Wolf:
Hallo,

mein Lotus Script Code lädt die Datei nur herunter, wenn ich sie zuvor per Internetexplorer geöffnet habe. Der selbe Code als Visual Basic unter Excel verlangt dies nicht und lädt alle Dateien ohne vorherigen Besuch der Webseite auf die Festplatte. Es muß lediglich einmal unter Visual Basic (Excel) der Zugriff auf die Homepage erfolgen, aber eben nicht für jeden weiteren Zugriff. (Ganz am Ende habe ich noch das VB im Excel geschrieben).

Frage: Wie bekomme ich es hin, dass mein Lotus Script Code die Dateien aus dem Internet lädt, ohne dass ich die einzelnen Webseiten zuvor besucht haben muss?

Hier mein Lotus Script Code:

Sub Click(Source As Button)
   Print "Start: Bei Dokumenten erfolgt TextPDF-Download und Import"
   On Error Goto ErrHandler
   Dim ses As New NotesSession
   Dim db As NotesDatabase
   Dim col As NotesDocumentCollection
   Dim doc As NotesDocument   
   Dim Url As String
   Dim Url2 As String
   Dim Schriftnummer As String
   Dim Dateiname As String
   'Dim aLog As AgentLog
   'Dim VerarbeiteteDokumente As String
   Dim importdatei As String
   Dim object As NotesEmbeddedObject
   Set ses = New NotesSession   
   Set db = ses.CurrentDatabase
   Set col = db.UnprocessedDocuments
   Set view = db.getView("pdftext-Import")
   Set doc = view.GetfirstDocument
   Set w = New NotesUIWorkspace
   'Set aLog = New AgentLog("TextPDF Import")
   'VerarbeiteteDokumtente=""
   
   Call w.URLOpen( "http://depatisnet.dpma.de/")
   Do Until doc Is Nothing
      'Download from Internet
      Schriftnummer = Cstr(doc.CY_PN_KD(0))         
'Beispiel Hyperlink
'http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1
      Url2 =  "http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=" & Schriftnummer
'Beispiel Dateiname
'C:\textpdf\DE03003827T1_text.pdf
      Dateiname = "C:\textpdf\"+Schriftnummer+"_text.pdf"         
      'Url = Inputbox$("URL eingeben",,Url2)
      Url = Url2
' Download-Funktion hier                          
DownloadFile Url, Dateiname
      Call DeleteUrlCacheEntry(Url)
      
      ' Get the next document
      Set doc = view.getNextDocument( doc )
      i% = i% + 1
      all% = col.Count
      Print "Bitte warten ... " +  Cstr(i%) + " Dokument(e) insgesamt heruntergeladen"   
      
   Loop
   
   Print "Ende: TextPDFs wurden importiert. Siehe Protokoll."
   
   Exit Sub
   
ErrHandler:
   
   Resume Next
End Sub

###########################################

Function DownloadFile(URL As String, LocalFilename As String) As Boolean
   Dim lngRetVal As Long
   lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
   If lngRetVal = 0 Then DownloadFile = True
End Function

#############################################

Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (Byval pCaller As Long, Byval szURL As String, _
Byval szFileName As String, Byval dwReserved As Long, Byval lpfnCB As Long) As Long

Declare Function DeleteUrlCacheEntry Lib "wininet" Alias "DeleteUrlCacheEntryA" (Byval lpszUrlName As String) As Long
############################################

Use "Common"




********************************************************************
*** Visual Basic Code (als Makro in Excel, ausgeführt über eine Schaltfläche)
*** In der ersten Tabellenspalte stehen die Hyperlinks (pro Zelle ein Link),
*** in der zweiten Tabellenspalte die Dateinamen.
*** Wobei auch hier das Depatisnet einmalig zuvor geöffnet werden muss.
*** URL                                 Localfilename             
http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE000000001IT   C:\textpdf\DE000000001IT_text.pdf   
http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE0000001A   C:\textpdf\DE0000001A_text.pdf   
http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE03003827T1   C:\textpdf\DE03003827T1_text.pdf   
********************************************************************
Option Explicit

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Sub DownloadFiles()
Dim rng As Range

For Each rng In Range("A2:A" & Application.Max(2, Cells(Rows.Count, 1).End(xlUp).Row))
   If rng <> "" Then
      URLDownloadToFile 0, rng.Text, rng.Offset(0, 1).Text, 0, 0
   End If
Next
    
End Sub



m3:
Und Deine Frage lautet ..... ?

http://www.tty1.net/smart-questions_de.html#explicit

klaussal:

--- Zitat ---Und Deine Frage lautet ..... ?
--- Ende Zitat ---

Vermutlich: warum kann LN nicht das, was Excel kann ?


--- Zitat ---Der selbe Code als Visual Basic unter Excel verlangt dies nicht
--- Ende Zitat ---

mezz:
libcurl ist dein freund: http://curl.haxx.se/libcurl/

pram:
Das Problem liegt wohl an depatis. Wenn ich folgenden Link zum ersten Mal (oder nach dem Löschen der Sessioncookies) anklicke:
http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE0000001A werde ich auf
http://depatisnet.dpma.de/DepatisNet/depatisnet?window=1&space=menu&content=index&action=index&docid=DE0000001A umgeleitet und erhalte folgenden Hinweis

--- Zitat ---Herzlich willkommen zur Recherche in den Datenbeständen des DEPATIS-Systems des Deutschen Patent- und Markenamtes (DPMA)

Dieser Dienst wendet sich vor allem an Erstnutzer von Patentinformationen, vor allem in kleinen und mittleren Unternehmen, sowie an Schulen, Universitäten und anderen wissenschaftlichen Einrichtungen. Angesichts beschränkter Systemkapazität steht der Dienst insbesondere nicht dafür zur Verfügung, größere Datenmengen herunterzuladen. Daten und Dokumente in größerem Umfang können Sie gegen Erstattung der Bereitstellungskosten über unsere Datenabgabedienste DPMAdatenabgabe und DEPATISconnect erhalten. Personen, die die allgemeine Nutzung dieses Dienstes durch eine ungewöhnliche hohe Anzahl manueller oder softwareunterstützter Zugriffe zu behindern drohen (mehr als 5000 Datenbankzugriffe täglich durch dieselbe Person oder unter derselben IP-Adresse bzw. unter einem zusammengehörigen Adressbereich), können ohne weitere Vorwarnung von der Nutzung ausgeschlossen werden. Gleiches gilt bei Umgehungstatbeständen, durch die der Dienst über das angegebene Maß hinaus in Anspruch genommen wird.

--- Ende Zitat ---

Dabei wird ein JSESSIONID-cookie angelegt. Ein erneuter Klick auf den Link
http://depatisnet.dpma.de/DepatisNet/depatisnet?action=textpdf&docid=DE0000001A
öffnet dann auch das PDF (solange der Cookie existiert)
Dies wird gerne gemacht, damit Suchmaschinen etc. den Content nicht so einfach abgrasen können  ;)

Gruß
Roland

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln