Abrir una conexión de red mediante la API de red
PRECAUCIÓN:
El método de ConnectionFactory.getConnection() bloquea la ejecución del subproceso. Debe crear un subproceso separado para llamar a getConnection().
- Importe las clases y las interfaces necesarias.
import net.rim.device.api.io.transport.*;
import net.rim.device.api.io.transport.options.*;
import net.rim.device.api.io.transport.TransportInfo;
import net.rim.device.api.ui.UiApplication;
- Cree una lista ordenada de transportes preferidos.
int[] intTransports =
{ TransportInfo.TRANSPORT_TCP_WIFI,
TransportInfo.TRANSPORT_WAP2,
TransportInfo.TRANSPORT_TCP_CELLULAR
}
- Configure las opciones para el transporte TCP móvil si se aplica.
TcpCellularOptions tcpOptions = new TcpCellularOptions();
if(!TcpCellularOptions.isDefaultAPNSet())
{
tcpOptions.setApn("My APN");
tcpOptions.setTunnelAuthUsername("user");
tcpOptions.setTunnelAuthPassword("password");
}
- Cree un objeto de ConnectionFactory.
ConnectionFactory factory = new ConnectionFactory();
- Configure cualquier otra opción de ConnectionFactory aplicable a su aplicación. En este caso, TCP móvil es uno de los transportes preferidos, así que configrue las opciones de transporte TCP móvil.
factory.setTransportTypeOptions(TransportInfo.TRANSPORT_TCP_CELLULAR, tcpOptions);
factory.setAttemptsLimit(5);
- Cree un subproceso para recuperar la conexión. Si logró establecer la conexión, a continuación ConnectionFactory devuelve un objeto de ConnectionDescriptor que puede utilizar. En este paso, pase el objeto de ConnectionDescriptor método (displayContent()) que será responsable de mostrar el contenido.
Thread t = new Thread(new Runnable()
{
public void run()
{
ConnectionDescriptor cd = _factory.getConnection
("http://www.blackberry.com");
if(cd != null)
{
Connection c = cd.getConnection();
displayContent(c);
}
}
});
t.start();
- Implemente displayContent(). En este caso, envíe una pantalla que utilice un parámetro de Connection para recuperar y mostrar el contenido, después de que el subproceso de recuperación de la conexión finalice.
private void displayContent(final Connection conn)
{
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run() {
UiApplication.getUiApplication().pushScreen(new HTTPOutputScreen(conn));
}
});
}
Después de terminar:
Para obtener más información acerca cómo usar una conexión e implementar la clase de
HTTPOutputScreen, consulte "Enviar y recibir datos mediante una conexión de red".
Para ver una muestra de código completo, consulte "Muestra de código: recuperar una página Web mediante la API de red".
¿Le ha resultado útil esta información? Envíenos sus comentarios.