Pregunta

Me gustaría usar la dirección IP resuelta para conectarme al servidor en lugar del nombre de host.Aquí están mis fragmentos de código:

     // Get domain name from URL
    String domainName = url.substring("http://".length(),
            url.indexOf("/", 8));
    // Get IP address as string
    InetAddress inet = null;
    try {
        inet = InetAddress.getByName(domainName);
    } catch (UnknownHostException e) {
        Log.i(TAG, "The IP address cannot be resolved for " + domainName);
    }
        resolvedIP = inet.getHostAddress(); 

Aquí puedo obtener con éxito la DIRECCIÓN IP.Ahora intento reemplazar mi URL de la siguiente manera:

url = url.replace(domainName, resolvedIP);

Now I connect to server:
URL download = new URL(url);


conn = (HttpURLConnection) url.openConnection();

conn.getInputStream(); //Throws IO Exception

Puedo conectarme correctamente si utilizo la URL como está (sin reemplazar el nombre de dominio con la dirección IP).

Por favor, avíseme si estoy haciendo las cosas correctamente.

¿Fue útil?

Solución

Como regla general, intente utilizar la URL basada en el nombre de host.No es raro tener varios sitios web en la misma IP, que solo se distingue por el nombre del sitio (el llamado alojamiento virtual).Lo que está haciendo solo funcionará en el caso de que haya un solo sitio en una IP determinada.

Es bastante común que los balanceadores de carga tengan una IP para cada "sitio" que equilibran, pero aún no hay garantía de que se conecte al mismo backend para dos solicitudes consecutivas.Sin embargo, existen balanceadores de carga web que extienden el uso del alojamiento virtual hasta la capa de balanceo de carga.

Simplemente intentaría seguir descargando mediante una URL basada en el nombre de host.

Otros consejos

Una solución para solucionar el problema de VHost es usar su propio servidor DNS y devolver siempre la misma dirección IP para el host al que se está conectando.

Esto no requiere cambios en su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top