Autor Thema: existiert die URL ???  (Gelesen 7148 mal)

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
existiert die URL ???
« am: 27.06.03 - 12:14:23 »
Hallo,

ich habe eine Datenbank, in der verschiedene URLs gespeichert sind. Ich suche nun nach einem Ansatz, wie ich aus dem Notes Client prüfen kann, ob eine URL existiert (oder erreichbar ist).

Viele Grüße
fritandr

Andreas Fritz

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:existiert die URL ???
« Antwort #1 am: 01.07.03 - 14:48:00 »
vielleicht ein wenig abgefahren die idee...
aber...
ping den server an...
muesste sogar noch was dazu haben...
ja, hier ein ping unter ls...

gruss

ps: das ganze ist nicht plattformunabhaengig !

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #2 am: 01.07.03 - 15:19:01 »
Hallo Till_21,

die Idee mit dem Ping hatte ich auch schon. Da es u.a. genügend Server gibt, die einen Ping von vornherein nicht zulassen bzw. abblocken, scheidet diese Alternative leider aus.

Trotzdem Danke für die Antwort.

Jemand weitere Ideen?

Viele Grüße
fritandr
Andreas Fritz

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:existiert die URL ???
« Antwort #3 am: 01.07.03 - 15:43:55 »
Da es u.a. genügend Server gibt, die einen Ping von vornherein nicht zulassen bzw. abblocken, scheidet diese Alternative leider aus.

was verwaltet ihr denn da ?
Titten-Seiten ?

Scherz beiseite...
ganz abgefahren waere es per ole eine instanz des ie zu oeffnen, die url offnen und dir ein flag zurueckgeben lassen...
nicht getestet, muesste aber funktionieren...
bei periodischen agenten hast du natuerlich versch***

gruss

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #4 am: 01.07.03 - 21:27:23 »
Zitat
was verwaltet ihr denn da ?
Eigentlich nur eine Sammlung von Internetbookmarks, wie sie jeder in seinem Internetexplorer, Netscape,... hat. Nachdem man so seine Bookmarks überall zur Verfügung hat, wo man einen Internetzugang hat, möchten wir jetzt gerne noch einen Agenten haben, der die ganze Sammlung mal durchgeht und die vorhandenen Links checkt. Nicht erreichbare Links könnten dann gekennzeichnet werden.
So hat man dann auch einen Überblick über die Aktualität seiner Links.

Viele Grüße
fritandr
Andreas Fritz

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #5 am: 01.07.03 - 22:24:55 »
Dürfte mit einem Java-Agenten gehen.

Dieser code
Code
/* SaveURL.java */

import java.net.*;
import java.io.*;

public class SaveURL
{
  public static void main(String[] args)
  {
    if (args.length != 2) {
      System.err.println(
        "Usage: java SaveURL <url> <file>"
      );
      System.exit(1);
    }
    try {
      URL url = new URL(args[0]);
      OutputStream out = new FileOutputStream(args[1]);
      InputStream in = url.openStream();
      int len;
      byte[] b = new byte[100];
      while ((len = in.read(b)) != -1) {
        out.write(b, 0, len);
      }
      out.close();
      in.close();
    } catch (MalformedURLException e) {
      System.err.println(e.toString());
      System.exit(1);
    } catch (IOException e) {
      System.err.println(e.toString());
      System.exit(1);
    }
  }
}

müsste auf deine Aufgabe zugeschnitten werden.

wenn nämlich nichts zurückkommt,
Code
D:\jMy\net\url>java SaveURL http://www.notes.net
Usage: java SaveURL <url> <file>

D:\jMy\net\url>java SaveURL http://www.notes.net C:\temp\testUrl.txt

D:\jMy\net\url>java SaveURL http://www.notes.knet C:\temp\testUrl.txt
java.net.UnknownHostException: www.notes.knet

D:\jMy\net\url>
z.B. bei http://www.notes.knet
wird eine UnknownHostException geworfen.

funktioniert auch mit komischen urls wie http://www.theserverside.com/home/thread.jsp?thread_id=20101&article_count=8#87562
Nicht aus der dos kommandozeile (& scheint da ein Sonderzeichen zu sein), aber im code (also auch aus LoNo-Java-Agenten Agenten).

Sofern du nicht Java kannst, kann ich dir helfen, wenn du den LotusNotes code postest, der durch die ganzen URLs durchiteriert.
Ich schreib das dann auf Java um (falls das nicht zu lang ist).

eigentlich brauchst du nur sowas in der Art:
Code
try {
      URL url = new URL(theUrlAsString);
      OutputStream out = new FileOutputStream(args[1]);
      InputStream in = url.openStream();
} catch (MalformedURLException e) {
      //IRGENDWAS TUN UM ZU KENNZEICHNEN; DASS DER LINK FAUL IST
      
 }


Gruss Axel
« Letzte Änderung: 01.07.03 - 22:42:08 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #6 am: 01.07.03 - 22:44:53 »
Hallo Axel,

vielen Dank für den Ansatz. Java kann ich noch nicht  :'(

Aber - was nicht ist, kann ja noch werden.

Ich werde auf alle Fälle mal versuchen, wie weit ich damit komme.

Bei Erfolg poste ich dann hier die Lösung.

Viele Grüße
Andreas
Andreas Fritz

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #7 am: 01.07.03 - 23:09:28 »

so in der Art:
Code
import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

  public NotesMain() {
    try {
      Session ns = getSession();
AgentContext agentContext = ns.getAgentContext();
Database ndb = agetContext.getCurrentDatabase();
View nvw = ndb.getView("DIE_VIEW");
Document ndocUrl = nvw.getFirstDocument();
while (ndocUrl != null) {
String urlAsString = ndocUrl.getItemValueString("FELD_MIT_DER_URL");
try {
      URL url = new URL(urlAsString);
      InputStream in = url.openStream();
in.close();
} catch (MalformedURLException e) {
docUrl.replaceItemValue("urlIstFaul", "faul");
}  catch (Exception e) {
e.printStackTrace();
}
} // end while
} catch (NotesException e) {
e.printStackTrace();
}}}
[/url]

code ist ungetestet, blind runtergeschrieben. 

(Fehlermeldungen siehst du in Java Debug Console, neben LotusNotes Debugger in Menü)


     
}
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #8 am: 01.07.03 - 23:43:06 »

so in der Art:
Code
import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

  public NotesMain() {
    try {
      Session ns = getSession();
AgentContext agentContext = ns.getAgentContext();
Database ndb = agetContext.getCurrentDatabase();
View nvw = ndb.getView("DIE_VIEW");
Document ndocUrl = nvw.getFirstDocument();
while (ndocUrl != null) {
String urlAsString = ndocUrl.getItemValueString("FELD_MIT_DER_URL");
try {
      URL url = new URL(urlAsString);
      InputStream in = url.openStream();
in.close();
} catch (MalformedURLException e) {
docUrl.replaceItemValue("urlIstFaul", "faul");
}  catch (Exception e) {
e.printStackTrace();
}
docUrl = nvw.getNextDocument (docUrl);
} // end while
} catch (NotesException e) {
e.printStackTrace();
}}}
[/url]

code ist ungetestet, blind runtergeschrieben. 

(Fehlermeldungen siehst du in Java Debug Console, neben LotusNotes Debugger in Menü)


     
}
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:existiert die URL ???
« Antwort #9 am: 02.07.03 - 07:07:51 »
habe mir mal erlaubt, die typos rauszumachen  :D

import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

public void NotesMain()
{
    try {
Session ns = getSession();
AgentContext agentContext = ns.getAgentContext();
Database ndb = agentContext.getCurrentDatabase();
View nvw = ndb.getView("DIE_VIEW");
Document ndocUrl = nvw.getFirstDocument();
while (ndocUrl != null) {
String urlAsString = ndocUrl.getItemValueString("FELD_MIT_DER_URL");
try {
      URL url = new URL(urlAsString);
      InputStream in = url.openStream();
in.close();
} catch (MalformedURLException e) {
ndocUrl.replaceItemValue("urlIstFaul", "faul");
}  catch (Exception e) {
e.printStackTrace();
}
ndocUrl = nvw.getNextDocument (ndocUrl);
} // end while
} catch (NotesException e) {
e.printStackTrace();
}}}
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re:existiert die URL ???
« Antwort #10 am: 02.07.03 - 07:39:19 »
Hab dann hier auch noch eine Lösung in Script ( mit API ).
Hier kann man auch recht eindrucksvoll sehen, wie einfach man das in Java lösen kann und welche Klimmzüge man machen muß, um eine Lösung in Script hinzubekommen.
Zwar kann ich bei meiner Lösung noch ein paar Informationen mehr auslesen, da ich mir den responseHeader von der URL hole. Trotzdem fehlt hier noch die komplette Logig, um erst einmal an das zu prüfende Dokument ranzukommen.
Zudem muß dann noch die zu testende URL aufbereitet werden, um an die Funktion übergeben werden zu können. ( Kann man mit Sicherheit noch vereinfachen )

Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Const INTERNET_SERVICE_HTTP = 3
Const INTERNET_FLAG_RELOAD = &H80000000
Const INTERNET_DEFAULT_HTTP_PORT = 80
Const HTTP_QUERY_RAW_HEADERS_CRLF = 22

Declare Function W32_InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (Byval sAgent As String, Byval lAccessType As Long, Byval sProxyName As String, Byval sProxyBypass As String, Byval lFlags As Long) As Long
Declare Function W32_InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (Byval hInternetSession As Long, Byval sServerName As String, Byval nServerPort As Integer, Byval sUsername As String, Byval sPassword As String, Byval lService As Long, Byval lFlags As Long, Byval lContext As Long) As Long
Declare Function W32_InternetCloseHandle Lib "wininet.dll" Alias "InternetCloseHandle" (Byval hInet As Long) As Integer
Declare Function W32_HttpOpenRequest Lib "wininet.dll" Alias "HttpOpenRequestA" (Byval hHttpSession As Long, Byval sVerb As String, Byval sObjectName As String, Byval sVersion As String, Byval sReferer As String, Byval something As Long, Byval lFlags As Long, Byval lContext As Long) As Long
Declare Function W32_HttpSendRequest Lib "wininet.dll" Alias "HttpSendRequestA" (Byval hHttpRequest As Long, Byval sHeaders As String, Byval lHeadersLength As Long, sOptional As Any, Byval lOptionalLength As Long) As Integer
Declare Function W32_HttpQueryInfo Lib "wininet.dll" Alias "HttpQueryInfoA" (Byval hHttpRequest As Long, Byval lInfoLevel As Long, Byval sBuffer As String, lBufferLength As Long, lIndex As Long) As Integer

Function getResponseHeaders(sHost As String, sObject As String, sUserName As String, sPassword As String) As String
   
   Dim rc%
   Dim hSession&, hRequest&, hConnection&, cbHeaderBuf&
   Dim headerBuf$
   
' initialize the WinInet API, retrieving any proxy or direct configuration info from the registry
   hSession& = W32_InternetOpen("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT)", INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0)
   
   If hSession& = 0 Then
      Msgbox "Can't initialize Win32 Internet Functions (wininet.dll)", 16, "WinInet Error"
   Else
' open an HTTP session for the site
      hConnection& = W32_InternetConnect(hSession&, sHost, INTERNET_DEFAULT_HTTP_PORT, sUserName, sPassword, INTERNET_SERVICE_HTTP, 0, 0)
      
      If hConnection& = 0 Then
         Msgbox "Could not open HTTP session for site " & sHost, 16, "WinInet Error"
      Else
' create a new HTTP request handle that will retrieve a resource from the server and not cache;
' note that you can also pass a POST request to upload info (see MS doc), or send an HTTP/1.0 request instead.
         hRequest& = W32_HttpOpenRequest(hConnection&, "GET", sObject, "HTTP/1.1", 0, 0, INTERNET_FLAG_RELOAD, 0)
         
         If hRequest& = 0 Then
            Msgbox "Could not generate an HTTP request handle", 16, "WinInet Error"
         Else
' send the request to the server with no additional headers (see MS doc to add your own headers)
            rc%=W32_HttpSendRequest(hRequest&, "", 0, 0, 0)
            
            If rc%=False Then
               Msgbox "Could not send HTTP request", 16, "WinInet Error"
            Else
' prepare a buffer for the response headers, then query 'em
               headerBuf$=Space$(1024)
               cbHeaderBuf&=Len(headerBuf$)
               rc%=W32_HttpQueryInfo(hRequest&, HTTP_QUERY_RAW_HEADERS_CRLF, headerBuf$, cbHeaderBuf&, 0)
               
               If rc% = 0 Then
                  Msgbox "Could not retrieve HTTP response headers", 16, "WinInet Error"
               Else
' return the response headers on success
                  getResponseHeaders=Trim$(Left$(headerBuf$, cbHeaderBuf&))
               End If
            End If
         End If
      End If
   End If
   
' close all handles
   W32_InternetCloseHandle hRequest&
   W32_InternetCloseHandle hSession&
   W32_InternetCloseHandle hConnection&
   
End Function

Sub Click(Source As Button)
   Dim sHeaders$, sHost$, sObject$
   
   sHost$="www.google.de"
   
   sObject$="search?q=eknori&hl=de&ie=UTF-8&oe=UTF-8"
   
   sHeaders$=getResponseHeaders(sHost$, sObject$, "", "")
   Msgbox "The HTTP response headers from " & sHost$ & " are: " _
   & Chr(13) & Chr(10) & Chr(13) & Chr(10) _
   & sHeaders$, 0, "HTTP Response Headers"
   
   If Instr(sHeaders$,"200 OK") Then
      Msgbox "URL OK"
   Else
      Msgbox "URL NICHT OK"
   End If
   
End Sub

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #11 am: 02.07.03 - 12:48:17 »
[...] einfach man das in Java lösen kann und welche Klimmzüge man machen muß, um eine Lösung in Script hinzubekommen [...]


v.a. wenn der Server auf Linux umgestellt werden soll  ;D ::) ;D

write everywhere, run again (oder so ähnlich)
« Letzte Änderung: 02.07.03 - 12:51:36 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #12 am: 02.07.03 - 14:52:19 »
Hallo,

stimmt, der Java Agent ist schön kurz  ;D

Aber leider bekomme ich für jede Adresse, die ich prüfe auf der Java Console folgende Fehlermeldungen:  :'(

java.net.ConnectException: Connection refused: connect
   at java.net.PlainSocketImpl.socketConnect(Native Method)
   at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:345)
   at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:157)
   at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:144)
   at java.net.Socket.<init>(Socket.java:294)
   at java.net.Socket.<init>(Socket.java:121)
   at sun.net.NetworkClient.doConnect(NetworkClient.java:65)
   at sun.net.www.http.HttpClient.openServer(HttpClient.java:356)
   at sun.net.www.http.HttpClient.openServer(HttpClient.java:543)
   at sun.net.www.http.HttpClient.<init>(HttpClient.java:291)
   at sun.net.www.http.HttpClient.<init>(HttpClient.java:301)
   at sun.net.www.http.HttpClient.New(HttpClient.java:313)
   at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:429)
   at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:522)
   at java.net.URL.openStream(URL.java:825)
   at JavaAgent.NotesMain(JavaAgent.java:21)
   at lotus.domino.AgentBase.runNotes(Unknown Source)
   at lotus.domino.NotesThread.run(NotesThread.java:208)

Habt Ihr eine Idee, was ich falsch mache?

Viele Grüße
fritandr
Andreas Fritz

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #13 am: 02.07.03 - 15:20:10 »
kannst du bitte genau den Source code posten, den du laufen lässt (aus einem Agenten, auf Kommandozeilenebene).
Das kann mit Firewall-Dingen zusammenhängen, bin mir nicht ganz sicher.

Gruss Axel
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:existiert die URL ???
« Antwort #14 am: 02.07.03 - 16:25:04 »
WICHTIG!!!

Habe UnknownHostException vergessen.

Das funktioniert jedenfalls. Du musst diese UnknownHostException in den code noch einklinken (wie unten gezeigt.

Gruss Axel

Code
import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

   public void NotesMain() {

      try {
         Session session = getSession();
         AgentContext agentContext = session.getAgentContext();

         try {
      URL url = new URL("http://www.javaranchc.com");
    InputStream in = url.openStream();
in.close(); 
System.out.println("url ist da");
} catch (MalformedURLException e) {
System.out.println("url ist nicht da");
}  catch (UnknownHostException e) {
System.out.println("url ist nicht da");
} catch (Exception e) {
   e.printStackTrace();
   }


      } catch(Exception e) {
         e.printStackTrace();
      }
   }
}

Code
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #15 am: 02.07.03 - 17:44:08 »
Hallo Axel,

Danke frür den weiteren Tip. Ich hoffe, daß ich heute abend noch dazu komme, das zu testen. Dann gibt es morgen früh das Ergebnis.
Das mit meinem "Connection refused" kommt wohl daher, daß ich versuicht habe, Links aufzurufen, die eine Authentifizierung verlangen.
Das Problem kann ich also hoffentlich noch weiter eingrenzen.

Viele Grüße
Andreas
Andreas Fritz

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #16 am: 02.07.03 - 22:13:44 »
Hallo Axel,

inzwischen habe ich Deinen Agenten soweit, daß ich in der Java Console die einzelnen Fälle nachvollziehen kann.

---------------------------------------------------------------------
import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

public void NotesMain()
{
    try
        {
         Session ns = getSession();
         AgentContext agentContext = ns.getAgentContext();
         Database ndb = agentContext.getCurrentDatabase();
         View nvw = ndb.getView("test");
         Document ndocUrl = nvw.getFirstDocument();
         while (ndocUrl != null)
             {
              String urlAsString = ndocUrl.getItemValueString("link");
              try {
                    URL url = new URL(urlAsString);
                    InputStream in = url.openStream();
                    in.close();
                    System.out.println("URL ist da: "+urlAsString);
                    ndocUrl.replaceItemValue("linkstatus", "URL OK");
                   }
              catch (MalformedURLException e) //URL nicht da
                  {
                     System.out.println("URL not found: " + urlAsString);
                    ndocUrl.replaceItemValue("linkstatus", "URL not Found");
                    }
              catch (UnknownHostException e)
                   {
                      System.out.println("Unknown Host: " + urlAsString);
                      ndocUrl.replaceItemValue("linkstatus", "Unknown Host");
                      }
              catch (Exception e)
                   {
                    e.printStackTrace();
                    }
              ndocUrl = nvw.getNextDocument (ndocUrl);
              } // end while
              }
      catch (NotesException e)
             {
            e.printStackTrace();
             }
} //end NotesMain
} // end Class
---------------------------------------------------------------------


Jetzt fehlt noch der entscheidende Tip, wie ich die Info nun in das Dokument zurückgeschrieben bekomme. Die Anweisung " ndocUrl.replaceItemValue("linkstatus", "Unknown Host"); " scheint Ergebnislos zu verpuffen. Muß ich das Dokument nach dem replaceItemValue noch aktualisieren, speichern oder so?

Übrigens. Das hier ist ein Problem, an dem ich aus rein privatem Interesse arbeite. Dementsprechend ist es überhaupt nicht zeitkritisch. Wenn Du also der Meinung bist, daß ich jetzt versuchen sollte, mit der Designerhilfe weiterzukommen, um einen größeren Lerneffekt zu erzielen, dann versuche ich erstmal, alleine weiterzukommen.

Nochmals Danke für Deine Hilfe.
fritandr
Andreas Fritz

Glombi

  • Gast
Re:existiert die URL ???
« Antwort #17 am: 03.07.03 - 08:51:37 »
Hi,
in der Tat, Du must das Dokument noch speichern:


ndocUrl.replaceItemValue("linkstatus", "Unknown Host");
ndocUrl.save(false, false, true);

bei den anderen Stellen genauso...

Andreas

Offline fritandr

  • Global Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 742
  • Geschlecht: Männlich
  • Höre nie auf besser zu werden...
    • KAMMACHI Consulting GmbH
Re:existiert die URL ???
« Antwort #18 am: 03.07.03 - 09:27:34 »
Hallo,

und hier nun die vorläufige Endversion  ;D
Ich habe noch eine SocketException Abfrage eingebaut, um auch das Connection Refused,... abzufangen.

Nochmals vielen Dank an alle, die mir geholfen haben.

Viele Grüße
fritandr

------------------------------------------------------------------------
import lotus.domino.*;
import java.net.*;
import java.io.*;

public class JavaAgent extends AgentBase {

public void NotesMain()
{
    try
        {
         Session ns = getSession();
         AgentContext agentContext = ns.getAgentContext();
         Database ndb = agentContext.getCurrentDatabase();
         // View nvw = ndb.getView("vwAllLinks");
         View nvw = ndb.getView("test");
         Document ndocUrl = nvw.getFirstDocument();
         while (ndocUrl != null)
             {
              String urlAsString = ndocUrl.getItemValueString("link");
             System.out.println("Prüfe: "+urlAsString);
              try {
                    URL url = new URL(urlAsString);
                    InputStream in = url.openStream();
                    in.close();
                    System.out.println("URL ist da: "+urlAsString);
                    ndocUrl.replaceItemValue("linkstatus", "URL OK");
                    ndocUrl.save(false, false, true);
                   }
              catch (MalformedURLException e) //URL nicht da
                  {
                     System.out.println("URL not found: " + urlAsString);
                    ndocUrl.replaceItemValue("linkstatus", "URL not Found");
                    ndocUrl.save(false, false, true);
                    }
              catch (UnknownHostException e)
                   {
                      System.out.println("Unknown Host: " + urlAsString);
                      ndocUrl.replaceItemValue("linkstatus", "Unknown Host");
                      ndocUrl.save(false, false, true);
                      }
              catch (SocketException e)
                   {
                      System.out.println("SocketConnectiont: " + urlAsString);
                      ndocUrl.replaceItemValue("linkstatus", "SocketConnection Error");
                      ndocUrl.save(false, false, true);
                      }
              catch (Exception e)
                   {
                    e.printStackTrace();
                    }
              ndocUrl = nvw.getNextDocument (ndocUrl);
              } // end while
              }
      catch (NotesException e)
             {
            e.printStackTrace();
             }
} //end NotesMain
} // end Class

Andreas Fritz

Glombi

  • Gast
Re:existiert die URL ???
« Antwort #19 am: 03.07.03 - 09:33:43 »
@fritandr:
Schön dass es klappt! Wenn Du nix dagegen hast, werde ich mir den Code mal ausborgen, da ich auch eine Datenbank habe, in der Links verwendet werden. Falls ich noch was ergänze, poste ich es.

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz