Differenze tra le versioni di "Sapere se un indirizzo web è valido"

Da Gambas-it.org - Wikipedia.
(Creata pagina con 'Per sapere se una [https://it.wikipedia.org/wiki/Uniform_Resource_Locator URL] è valida, e quindi esistente, si possono utilizzare almeno due modalità. ==Uso delle sole ri...')
 
Riga 62: Riga 62:
 
     Print "Ping: host "; Quote(idn); " valido\n"
 
     Print "Ping: host "; Quote(idn); " valido\n"
 
     Print "Nome ufficiale dell'host:";; String@(Pointer@(hos))
 
     Print "Nome ufficiale dell'host:";; String@(Pointer@(hos))
     Print "Nome alias:";; String@(Pointer@(Pointer@(hos + 8)))
+
     Print "Nome alias:";; String@(Pointer@(Pointer@(hos + SizeOf(gb.Pointer))))
 
   Endif
 
   Endif
 
   
 
   
 
  '''End'''
 
  '''End'''

Versione delle 11:49, 6 lug 2015

Per sapere se una URL è valida, e quindi esistente, si possono utilizzare almeno due modalità.


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 = "http://www.gambas-it.org"
  
  While WebView1.Progress < 1.0
    Wait 0.01
  Wend
   
' Se la proprietà ".HTML" dell'oggetto "WebView" ha conservato la sua stringa predefinita di Tag html, allora la URL non è valida:
  If WebView1.HTML = "<html><head></head><body></body></html>" Then
    Print "La URL non esiste !"
  Else
    Print "La URL esiste."
  Endif

End


Un'altra modalità con l'uso delle sole risorse di Gambas, attivando in particolare, come nell'esempio precedente, il componente gb.qt4.webkit:

Public Sub Main()

  WebView1.Url = "http://www.gambas-it.org"
  
  While WebView1.Progress < 1.0
    Wait 0.01
  Wend
  
' Se la proprietà ".Text" dell'oggetto "WebView" è nulla, allora la URL molto probbilmente non è valida:
  If WebView1.Text = Null Then Print "La URL no existe."
   
End


Uso della libreria esterna libsnmp.so.30.0.2

Questa'altra modalità fa uso della funzione esterna gethostbyname() contenuta dalla libreria libsnmp.so.30.0.2, che pertanto andrà richiamata nell'applicazione Gambas.

Mostriamo un semplice esempio:

Library "libsnmp:30.0.2"

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


Public Sub Main()
 
 Dim hos As Pointer
 Dim idn As String
 
  idn = "www.yahoo.ex"
  
  hos = gethostbyname(idn)
  If IsNull(hos) Then
    Print "ping: host sconosciuto";; Quote(idn)
  Else
    Print "Ping: host "; Quote(idn); " valido\n"
    Print "Nome ufficiale dell'host:";; String@(Pointer@(hos))
    Print "Nome alias:";; String@(Pointer@(Pointer@(hos + SizeOf(gb.Pointer))))
  Endif

End