programacion plataforma para lenguaje entorno desarrollo java json http blackberry blackberry-eclipse-plugin

java - plataforma - lenguaje de programacion de blackberry



Enviar solicitud JSON desde la aplicaciĆ³n blackberry (1)

¿Cómo puedo enviar una solicitud JSON desde la aplicación blackberry que funciona como cliente al servidor para obtener información del servidor para usarlos en la aplicación BB? Uso Blackberry Eclipse en Windows 7

pruebo este código

public void loginRequest() throws IOException, JSONException{ HttpConnection c = null; InputStream is = null; int rc; JSONObject postObject = new JSONObject(); postObject.put("method", method); //postObject.put("params", Parameters); try{ c = (HttpConnection)Connector.open(urlPath); // Set the request method and headers c.setRequestMethod(HttpConnection.GET); c.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); c.setRequestProperty("Content-Length", "" + (postObject.toString().length() - 2)); c.setRequestProperty("method", "GET"); // Getting the response code will open the connection, // send the request, and read the HTTP response headers. // The headers are stored until requested. rc = c.getResponseCode(); if (rc != HttpConnection.HTTP_OK){ throw new IOException("HTTP response code: " + rc); } is = c.openInputStream(); // Get the length and process the data int len = (int)c.getLength(); if (len > 0){ int actual = 0; int bytesread = 0 ; byte[] data = new byte[len]; while ((bytesread != len) && (actual != -1)){ actual = is.read(data, bytesread, len - bytesread); bytesread += actual; } //Get the JSON String System.out.println(new String(data)); } else{ int ch; while ((ch = is.read()) != -1){ //TODO /* process((byte)ch); */ } } }catch (ClassCastException e){ throw new IllegalArgumentException("Not an HTTP URL"); }finally { if (is != null) is.close(); if (c != null) c.close(); } }

Llamo a este método por el método de ejecución en un hilo

cuando el simulador alcanza ( rc = c.getResponseCode (); ) se detiene el código en ejecución

Depuro el código y se detiene cuando llega a esta declaración con este error

La conexión local ha excedido el tiempo después de ~ 120000

alguna ayuda


Cuando ejecute la aplicación en el simulador, asegúrese de haber habilitado el Servicio de conexión del sistema de datos móviles (MDS-CS) con simulador en "Configuraciones de ejecución" o "Configuraciones de depuración" de Eclipse -> "Ficha Simulador" -> "Pestaña General".

Si no está habilitado, debe consultar esta guía " Prueba de una aplicación de dispositivo BlackBerry con BlackBerry Smartphone Simulator ", particularmente la sección " Prueba de una aplicación de dispositivo BlackBerry que usa una conexión HTTP ". Para resumir, tienes que habilitar el MDS-CS. Después de habilitarlo, debe reiniciar su simulador. Aquí hay una cita de esta guía:

Inicie BlackBerry MDS Connection Service cuando inicie BlackBerry Smartphone Simulator

  1. En Eclipse®, en el menú Ejecutar, haga clic en Configuraciones de depuración o Ejecutar configuraciones.
  2. Expanda el elemento de BlackBerry Simulator.
  3. Complete una de las siguientes tareas:
    • Para trabajar con una configuración de lanzamiento existente, en BlackBerry Simulator, haga clic en una configuración de inicio.
    • Para crear una nueva configuración de inicio, haga clic con el botón derecho en BlackBerry Simulator, seleccione Nuevo.
  4. Haga clic en la pestaña Simulador.
  5. Haga clic en la pestaña General.
  6. Seleccione la casilla de verificación Iniciar servicio de conexión del sistema de datos móviles (MDS-CS) con el simulador.
  7. Haga clic en Aplicar.

Editar :
Alternativamente, al usar un simulador puede agregar ;deviceside=true sufijo a la url que pasa a Connector.open() . Al configurar deviceside = true, usted especifica que la conexión TCP subyacente debe abrirse directamente desde la computadora de mano (simulador en su caso), por lo tanto, BlackBerry MDS Connection Service no se utilizará. Aquí hay un fragmento de código basado en tu código:

if (DeviceInfo.isSimulator()) { urlPath += ";deviceside=true"; } else { urlPath += connectionDependentSuffix; // suffix that is relevant to // the desired connection option } c = (HttpConnection)Connector.open(urlPath);

Espero que esto ayude.