sábado, 26 de marzo de 2011

ASP.NET - Determinar si un dominio ya existe (metodo POST automatizado)

busca_dominio_aspnet Ajá, ya estamos de vuelta… poniendo un granito de arena para llenar ese gran vacío de información que existe.

Has leído el título y estás pensando:
pero cómo vamos a buscar un dominio si eso depende de otros aspectos: como que tienes que amarrarte a un servicio que proporcione esa información y probablemente… tengas que pagar por ello.

Sí pues, esa es una forma. La otra forma es usar el acceso de alguien que seguramente ha pagado por eso (llámalo travesura ;P), y eso es lo que vamos a hacer nosotros.

Les explico, si ponen en el buscador esta url http://bit.ly/bn3GSQ … verán que es una página de alguna empresa mexicana que brinda el servicio de buscar dominios… si ellos pagan o cómo consiguen la información de dominios… es su problema… lo que nosotros queremos es el resultado.

Si examinamos un poquito el FORM de dicha página hecha en php concluiremos que usan el método POST para hacer sus peticiones de información… y que dicho FORM usa como atributo ACTION=buscando.php… la cual es la página que devuelve los resultados.

También veremos que la petición necesita tres parámetros para que funcione:
1.- nomdom: que es el nombre del dominio a consultar ( la cajita de texto donde ponemos el nombre del dominio)
2.- dom: que es la extension del dominio(.com, .net, etc )
3.- Boton_Aceptar: que es el otro parámetro que se pasa para especificar la acción( este es el botón BUSCAR).

Dicho todo esto, ahora vamos a hacer lo mismo que hacer la página buscar.php… pero lo vamos a automatizar desde nuestra páginas aspx, y de la misma forma obtendremos la respuesta de si el dominio consultado existe o no.

Agreguen una página aspx y pongan este código:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Buscar dominios con ASP.NET</title>
<style type="text/css">
*{
font-family: Trebuchet MS;
padding: 5px;
}
.header{
width: 220px;
margin: auto auto;
text-align: center;
background-color: orange;
background-color: black;
color: white;
}
th{
background-color: black;
color: White;
}
td{
background-color: orange;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<table style="width: 450px">
<tr>
<th colspan="2">
Busca tu dominio
</th>
</tr>
<tr>
<td style="width: 20%; white-space: nowrap">
Dominio a Buscar:
</td>
<td style="white-space: nowrap">
<asp:TextBox ID="txtDomain" Width="70%" runat="server"></asp:TextBox>
<asp:DropDownList ID="ddlDomainExtension" runat="server">
<asp:ListItem Value="1" Text=".com"></asp:ListItem>
<asp:ListItem Value="2" Text=".net"></asp:ListItem>
<asp:ListItem Value="3" Text=".org"></asp:ListItem>
<asp:ListItem Value="4" Text=".info"></asp:ListItem>
<asp:ListItem Value="5" Text=".tv"></asp:ListItem>
</asp:DropDownList>
</td>
</tr>
<tr>
<td style="width: 30%; white-space: nowrap">
&nbsp;
</td>
<td style="text-align: right">
<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">Buscar ahora!!</asp:LinkButton>
</td>
</tr>
</table>
<asp:Literal ID="ltResponse" runat="server"></asp:Literal>
</form>
</body>
</html>


Esto genera la sgte pantalla:

busca_dominio_aspnet

Luego, en el lado del código pongan esto:

protected void LinkButton1_Click(object sender, EventArgs e)
{
string URL = "http://www.mexcompany.com/automatic/buscando.php";

System.Net.HttpWebRequest objWebRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(URL);

System.Text.StringBuilder postData = new System.Text.StringBuilder();

postData.Append("nomdom=" + HttpUtility.UrlEncode(txtDomain.Text) + "&");
postData.Append("dom=" + HttpUtility.UrlEncode(ddlDomainExtension.SelectedItem.Text) + "&");
postData.Append("Boton_Aceptar=Buscar+Dominio");

objWebRequest.Method = "POST";
objWebRequest.ContentType = "application/x-www-form-urlencoded";

byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(postData.ToString());
objWebRequest.ContentLength = byteArray.Length;

System.IO.Stream dataStream = objWebRequest.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

System.Net.HttpWebResponse objWebResponse = (System.Net.HttpWebResponse)objWebRequest.GetResponse();

System.IO.StreamReader objStreamReader = new System.IO.StreamReader(objWebResponse.GetResponseStream(), System.Text.Encoding.Default);

string htmlResponse  = objStreamReader.ReadToEnd();
//verifico si el html de respuesta contiene cierto texto...
if (htmlResponse.Contains("Lamentablemente el dominio que usted seleccionó ya está Registrado."))
Response.Write("Demasiado tarde... ya compraron ese dominio!!");
else
//eureka!!
Response.Write("Qué suerte, el dominio buscado aún está disponible!!");
}

Este código se ejecuta al presionar el botón buscar. Ejecuten el código, pongan el nombre de algún dominio y visualizen el resultado.

Espero que les sea de utilidad ;)

No hay comentarios.: