ASPcenter.net

8 marzo 2010

Verificare l’esistenza di un dominio con ASP ed XMLHTTP

Archiviato in: ASP e XML — Tag:, , , , — lukeonweb @ 09:31

La potenza dell’oggetto XMLHTTP, di casa Microsoft, permette di lavorare con file remoti e di gestirne una serie di dati; tra le sue molte sfaccettature esiste la proprietà Status che permette di definire, come si intende, lo stato della richiesta. In questo Articolo esaminiamo lo stato identificato col numero 12007 che identifica se la richiesta è andata a buon fine o meno.


Prendiamo sputo per costruire una piccola utility per il nostro sito per verificare se un dominio esiste o meno: si tratta di un servizio meno potente di un tradizionale WhoIs che conosciamo sui vari siti di Hosting della rete, nel senso che non è possibile sapere a chi è intestato il dominio e quali sono i dati di rete associati, ma semplicemente se è stato registrato o meno.

Di seguito un codice statico che verifica se il dominio specificato nella variabile indirizzo esiste o meno:

<%@LANGUAGE = VBScript%>
<html>
<body>

<p>
<%
    Dim indirizzo, xmlhttp, stato
    indirizzo = "http://www.mrwcorsi.it"
    Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
        On Error Resume Next
        xmlhttp.Open "GET", indirizzo, False
        xmlhttp.Send
        stato = xmlhttp.Status
        If CInt(stato) = 12007 Then
            Response.Write "Dominio libero"
        Else
            Response.Write "Dominio occupato"
        End If
    Set xmlhttp = Nothing
%>
</p>

</body>
</html>

Commentiamo il codice.

Dim indirizzo, xmlhttp, stato

Dichiaro le variabili che servono per indicare il dominio da pingare, per creare l’oggetto XMLHTTP e per definire lo stato della richiesta.

indirizzo = "http://www.mrwcorsi.it"

Valorizzo la variabile indirizzo con la URL del sito di MRW Corsi, tanto per fare un esempio.

Set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")

Creo un’istanza dell’oggetto XMLHTTP nella variabile xmlhttp.

On Error Resume Next

Questa clausola di gestione dell’errore è indispensabile perchè se ad XMLHTTP viene passato un file remoto, o in questo caso un dominio remoto, inesistente, va in errore e termina l’esecuzione della pagina. Questa gestione dell’errore serve nel caso in cui il dominio ricercato sia libero.

xmlhttp.Open "GET", indirizzo, False
xmlhttp.Send

Apro e lancio la richiesta HTTP.

stato = xmlhttp.Status

Assegno alla variabile stato lo stato della richiesta.

If CInt(stato) = 12007 Then
    Response.Write "Dominio libero"
Else
    Response.Write "Dominio occupato"
End If

Lancio la condizione secondo la quale se lo stato della richiesta è 12007 allora il dominio è libero, altrimenti vuol dire che il dominio è occupato. Per effettuare la verifica è necessario convertire in numerico la variabile stato con la funzione predefinita CInt() di VBScript (nativa di Visual Basic).

Lascio a voi il compito di creare un file HTML con un modulo che permetta di inserire il dominio da ricercare e di assegnare alla variabile indirizzo il compito di recuperare il dato; ad esempio:

Dim indirizzo
indirizzo = Request.Form("indirizzo")

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress