Sapere se un indirizzo web è valido: differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
Nessun oggetto della modifica
 
(4 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per sapere se una [https://it.wikipedia.org/wiki/Uniform_Resource_Locator URL] è valida, e quindi esistente, si possono utilizzare almeno due modalità.
Per sapere se una [https://it.wikipedia.org/wiki/Uniform_Resource_Locator URL] è valida, e quindi esistente, si può utilizzare la funzione esterna "gethostbyname()" contenuta dalla libreria condivisa: "''libc.so.6'' ".
 
==Uso delle sole risorse di Gambas con il componente ''gb.qt4.webkit''==
Volendo utilizzare le sole risorse di Gambas, un possibile codice sarebbe ad esempio il seguente, che prevede sia attivato preliminarmente il componente ''gb.qt4.webkit'' e fa uso dell'oggetto ''WebView'':
Public Sub Main()
  WebView1.Url = "https://www.gambas-it.org"
 
  While WebView1.Progress < 1.0
    Wait 0.01
  Wend
   
<FONT Color=gray>' ''Se la proprietà ".HTML" dell'oggetto "WebView" ha conservato la sua stringa predefinita di Tag ''html'', allora la URL non è valida:''</font>
  If WebView1.HTML = "<html><head></head><body></body></html>" Then
    Print "La URL non esiste !"
  Else
    Print "La URL esiste."
  Endif
End
 
 
==Uso della libreria esterna ''libsnmp''==
Questa'altra modalità fa uso della funzione esterna ''gethostbyname()'' contenuta dalla libreria ''libsnmp.so.40.1.0'', che pertanto andrà richiamata nell'applicazione Gambas.


Mostriamo un semplice esempio:
Mostriamo un semplice esempio:
  Library "libsnmp:40.1.0"
  Library "libc:6"
   
   
  Public Struct hostent
  Public Struct hostent
Riga 37: Riga 14:
  <FONT Color=gray>' ''struct hostent *gethostbyname(const char *name)'
  <FONT Color=gray>' ''struct hostent *gethostbyname(const char *name)'
  ' ''Returns a structure of type hostent for the given host name.''</font>
  ' ''Returns a structure of type hostent for the given host name.''</font>
  Private Extern gethostbyname(idn As String) As Pointer
  Private Extern gethostbyname(idn As String) As Hostent
   
   
   
   
Riga 44: Riga 21:
   Dim host As Hostent
   Dim host As Hostent
   Dim idn As String
   Dim idn As String
  Dim p As Pointer
 
  <FONT Color=gray>' ''Impostiamo il nome di un host esistente, quindi valido:''</font>
  <FONT Color=gray>' ''Impostiamo il nome di un host inesistente, quindi non valido:''</font>
   idn = "www.gambas-it.org"
   idn = "www.yahoo.ex"
    
    
   p = gethostbyname(idn)
   host = gethostbyname(idn)
  If p = 0 Then
    Print "ping: host sconosciuto", Quote(idn)
   Print "Ping: host "; Quote(idn); " valido\n"
   Else
  Print "Nome ufficiale dell'host: "; String@(host.h_name)
    host = p
  Print "Nome alias dell'host:    "; String@(Pointer@(host.h_aliases))
    Print "Ping: host "; Quote(idn); " valido\n"
   Print "Indirizzo IP dell'host:  "; String@(Pointer@(host.h_addr_list) + 32)
    Print "Nome ufficiale dell'host: "; String@(host.h_name)
    Print "Nome alias dell'host:    "; String@(Pointer@(host.h_aliases))
   Endif
   
   
  End
  End
Se l'host è inesistente, sarà sollevato un errore di segmentazione (11).

Versione attuale delle 10:10, 20 gen 2024

Per sapere se una URL è valida, e quindi esistente, si può utilizzare la funzione esterna "gethostbyname()" contenuta dalla libreria condivisa: "libc.so.6 ".

Mostriamo un semplice esempio:

Library "libc:6"

Public Struct hostent
  h_name As Pointer
  h_aliases As Pointer
  h_addrtype As Integer
  h_length As Integer
  h_addr_list As Pointer
End Struct

' struct hostent *gethostbyname(const char *name)'
' Returns a structure of type hostent for the given host name.
Private Extern gethostbyname(idn As String) As Hostent


Public Sub Main()
 
 Dim host As Hostent
 Dim idn As String

' Impostiamo il nome di un host esistente, quindi valido:
 idn = "www.gambas-it.org"
  
 host = gethostbyname(idn)

 Print "Ping: host "; Quote(idn); " valido\n"
 Print "Nome ufficiale dell'host: "; String@(host.h_name)
 Print "Nome alias dell'host:     "; String@(Pointer@(host.h_aliases))
 Print "Indirizzo IP dell'host:   "; String@(Pointer@(host.h_addr_list) + 32)

End

Se l'host è inesistente, sarà sollevato un errore di segmentazione (11).