Foros del Web » Programación para mayores de 30 ;) » Java »

[J2ME] Conexión HTTP con netBeans 6.5

Estas en el tema de [J2ME] Conexión HTTP con netBeans 6.5 en el foro de Java en Foros del Web. ¡Hola!. Estoy desarrollando una aplicación con J2ME , que requiere conectarse a un servidor vía http . Tanto el servidor ( JSP ) como el ...
  #1 (permalink)  
Antiguo 29/07/2009, 12:05
 
Fecha de Ingreso: marzo-2006
Mensajes: 106
Antigüedad: 18 años, 2 meses
Puntos: 0
[J2ME] Conexión HTTP con netBeans 6.5

¡Hola!.

Estoy desarrollando una aplicación con J2ME, que requiere conectarse a un servidor vía http.
Tanto el servidor (JSP) como el cliente (en J2ME) los estoy implementando en netBeans 6.5.

Bueno, el caso es que al conectarme al servidor, en el emulador de netBeans 6.5 me sale el siguiente texto:



__________________________________________________ ______________________________________________
Midlet wants to connect to http://localhost:8080/db using airtime. This may result in charges.

is it OK to use airtime?.

__________________________________________________ ______________________________________________



Le doy, por si realiza la función deseada, pero no es así.

¿A qué puede ser debido?. ¿Os ha ocurrido alguna vez?.

Posteo el código involucrado, por si estoy haciendo algo mal.


______________________________________________
public void commandAction(Command c, Displayable d) {
if (c == enterLogin) { //Si el comando es comprobar el login
try {
checkLogin(); //Metodo que lanza la conexion
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

public void checkLogin() throws java.io.IOException {
CheckLogin checkLogin = new CheckLogin(urlLogin); //urlLogin es un String donde tengo la url guardada
checkLogin.start();


}
//Inicio de la clase CheckLogin
public class CheckLogin extends Thread{
private String urlLogin;

public CheckLogin(String _urlLogin){
urlLogin = _urlLogin;
}

public void run() {
try {
HttpConnection httpConnection = (HttpConnection) Connector.open(urlLogin);
} catch (IOException ex) {
ex.printStackTrace();
}
}

}
//Fin de la clase CheckLogin
______________________________________________


Un saludo, y gracias.
__________________
"El río más profundo siempre es el más silencioso"

Última edición por Erume; 29/07/2009 a las 12:39
  #2 (permalink)  
Antiguo 21/05/2010, 12:35
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: [J2ME] Conexión HTTP con netBeans 6.5

Hola, ya se que el post es antiguo, pero por si alguien da con el...

Tambien tuve este problema y lo solucione haciendo una clase PantallaEspera que era la que extendia a Thread y donde se ejecutaba el hilo que establecia la conexión http.

- El problema: Al ejecutar la conexión http desde el hilo principal, cuando aparece el dialogo para confirmar la conexión http, la aplicación no recibe las pulsaciones de tecla de ese hilo, pues está centrado en el principal.

- La solución: Al crear una clase pantallaEspera que extiende Thread y Canvas, al pintar la pantalla con esa clase, la aplicación recibe las pulsaciones de tecla que se producen mientras se esta navegando por esa pantalla, y como el run() necesario para la conexión http es un metodo de esta clase, pues detecta que hemos pulsado el botón "si" para confirmar la conexion a internet.

Es dificil de explicar, aqui dejo el codigo.


//CLASE PANTALLA ESPERA
public class PantallaEspera extends Canvas implements CommandListener,Runnable{


private Font texto;
private Inicio midlet;
private Command salir;
private Image imagen;
private Thread t;
private String tipo,url;
private Conexion conexion;
private int id_zona;
private boolean continuar=true;

PantallaEspera(Inicio inicio){
conexion=new Conexion();

this.midlet=inicio;

salir=new Command("Salir",Command.EXIT,1);
texto=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE);


try{
System.out.println("Exito imagen");
imagen=Image.createImage("/imagenes/loading.gif");
} catch (IOException e) {
System.out.println("Error imagen");
e.printStackTrace();
}

this.addCommand(salir);
this.setCommandListener(this);
}
// AQUI PINTO LA PANTALLA DE ESPERA Y EJECUTO EL RUN()
protected void paint(Graphics g){
g.setGrayScale(255);
g.fillRect(0,0, getWidth(), getHeight());
g.setGrayScale(0);

g.drawImage(imagen,getWidth()/2,getHeight()/20, Graphics.TOP|Graphics.HCENTER);

g.setFont(texto);
g.drawString("Espere...", getWidth()/2,
getHeight()/2, Graphics.BASELINE|Graphics.HCENTER);

if (continuar)
{
continuar=false;
t=new Thread (this);
t.start();
}
}

public void commandAction(Command c, Displayable d) {
if(c==salir){
midlet.salir();
}
}

public void setTipo(String tipo){
this.tipo=tipo;
}


//AQUI ESTABLEZCO CONEXION CON LA CONEXIÓN
public void run() {
System.out.println("Ha exo el run para conexion");

String base = "http://www.miweb.es";

conectarLogin();
String respuesta = conexion.getRespuesta();
}
}





//CONEXION SIN EXTENDER THREAD
public void conectar(String url){
this.url=url;
System.out.println(url);
try{
c =(HttpConnection)Connector.open(this.url);
c.setRequestProperty("Content-Language","es-ES");
c.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
c.setRequestProperty("Connection","close");
c.setRequestMethod(HttpConnection.GET);

InputStream is = c.openInputStream();
procesarRespuesta(c,is);
//c.close();
}
catch (Exception e){
System.out.println(e);
}
}


public synchronized void procesarRespuesta(HttpConnection http, InputStream inst)throws IOException{

if (http.getResponseCode() == HttpConnection.HTTP_OK){
System.out.println("Conexion correcta");
int lon = (int) http.getLength();

if (lon != -1){
byte datos[] = new byte[lon];
inst.read(datos,0,datos.length);
respuesta = new String(datos);
}
else{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int ch;
while ((ch = inst.read()) != -1)
baos.write(ch);
respuesta = new String(baos.toByteArray());
baos.close();
}
}
else{
System.out.println(http.getResponseMessage());
}
}

public synchronized String getRespuesta(){
return respuesta;
}


Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:20.