http blackberry java-me wifi

¿Cómo llamar a HTTP URL usando wifi en el código J2ME para BlackBerry 5.0 y superior?



java-me (2)

Estoy llamando a un servicio web de BlackBerry utilizando el código J2ME. Cuando trato de abrir una conexión usando HttpConnection , solo HttpConnection verificando la conexión GPRS. Ahora, quiero verificar la conexión Wi-Fi y llamar a un servicio web a través de Wi-Fi.

El siguiente código es mi sección de conexión. ¿Cómo cambiar el código de una conexión wifi?

public boolean HttpUrl() { HttpConnection conn = null; OutputStream out = null; String url = "http://www.google.com"; try { conn = (HttpConnection) new ConnectionFactory().getConnection(url).getConnection(); if (conn != null) { conn.setRequestMethod(HttpConnection.POST); conn.setRequestProperty("Content-Length", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0"); } } catch (Exception e) { return false; } finally { try { out.close(); } catch (Exception e2) { } } //Only if exception occurs, we close the connection. //Otherwise the caller should close the connection himself. try { conn.close(); } catch (Exception e1) { } return true; }


Verifique de esta manera:

HttpConnection conn = null; String URL = "http://www.myServer.com/myContent;deviceside=true;interface=wifi"; conn = (HttpConnection)Connector.open(URL);

fuente


Hacer conexiones

La respuesta de Rafael funcionará si sabes que solo usarás Wi-Fi.

Sin embargo, si solo necesita soportar BlackBerry OS 5.0 - 7.1, le recomendaría que use ConnectionFactory . Normalmente , no limitarás tu código a solo usar un transporte . Normalmente admitirá (casi) cualquier transporte que tenga el dispositivo , pero es posible que desee codificar primero su aplicación para elegir ciertos transportes.

Por ejemplo,

class ConnectionThread extends Thread { public void run() { ConnectionFactory connFact = new ConnectionFactory(); connFact.setPreferredTransportTypes(new int[] { TransportInfo.TRANSPORT_TCP_WIFI, TransportInfo.TRANSPORT_BIS_B, TransportInfo.TRANSPORT_MDS, TransportInfo.TRANSPORT_TCP_CELLULAR }); ConnectionDescriptor connDesc; connDesc = connFact.getConnection("http://www.google.com"); if (connDesc != null) { HttpConnection httpConn; httpConn = (HttpConnection)connDesc.getConnection(); try { // TODO: set httpConn request method and properties here! final int iResponseCode = httpConn.getResponseCode(); UiApplication.getUiApplication().invokeLater(new Runnable() { public void run() { Dialog.alert("Response code: " + Integer.toString(iResponseCode)); } }); } catch (IOException e) { System.err.println("Caught IOException: " + e.getMessage()); } } } }

elegirá el transporte de Wi-Fi si Wi-Fi está disponible, pero usa la conexión GPRS si no lo está. Creo que esto generalmente se considera la mejor práctica para los dispositivos 5.0+.

Propiedades de solicitud

Este código

conn.setRequestProperty("Content-Length", "application/x-www-form-urlencoded");

no es correcto. Content-Length debe ser el tamaño, en bytes, de los parámetros HTTP POST. Vea un ejemplo aquí .

Enhebrado

Recuerde que hacer conexiones de red es lento. No bloquee la interfaz de usuario ejecutando este código en el hilo principal / UI. Coloque su código en una cadena de fondo para mantener la UI receptiva mientras solicita contenido remoto.