Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 05/09/12, 13:13:01
Avatar de NaxoForum
NaxoForum NaxoForum no está en línea
Usuario muy activo
Mensajes: 1,368
 
Fecha de registro: may 2009
Mensajes: 1,368
Modelo de smartphone: Redmi Note 4
Versión de ROM: MIUI
Tu operador: Vodafone
Mencionado: 4 comentarios
Tagged: 0 hilos
Conectar a URL con JSON

Hola,

Quiero empezar a hacer una aplicación para android, y necesito traerme unos datos de una web que esta montada con PHP y hay un metodo que hace un encode de un listado en JSON.
Pongo la dirección URL en el navegador y me devuelve bien los datos.

Ahora quiero recoger esos datos desde android y mostrarlo en un listado.
He comenzado a hacer al app, pero me da un crash la aplicación.

He utilizado este tutorial.
http://www.androidhive.info/2012/01/...sing-tutorial
pero llamando al metodo getJSONFromUrl me da un crash.
Debugando no pasa de la linea
HttpResponse httpResponse = httpClient.execute(httpPost);

Alguien podria ayudarme dandome otro metodo que recoga los datos de la URL, o viendo cual es el fallo que cometo??
Responder Con Cita


  #2  
Viejo 06/09/12, 09:31:53
Avatar de javito19
javito19 javito19 no está en línea
Miembro del foro
Mensajes: 364
Compra y venta: (10)
 
Fecha de registro: feb 2009
Mensajes: 364
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
Prueba con esto:

Una vez que tienes tu objeto jsonObject ya puedes empezar a recorrerlo.

Un saludo

JSONObject jsonObject = new JSONObject( readJSON( tu URL ) );

public String readJSON(String url) {
StringBuilder builder = new StringBuilder();
try {
httpGet.setURI( new URI(url) );
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} else {
Log.e(ParseJSON.class.toString(), "Failed to download file");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch ( URISyntaxException e){
e.printStackTrace();
}
return builder.toString();
}
Responder Con Cita
  #3  
Viejo 06/09/12, 09:38:07
Avatar de javito19
javito19 javito19 no está en línea
Miembro del foro
Mensajes: 364
Compra y venta: (10)
 
Fecha de registro: feb 2009
Mensajes: 364
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
faltaban estas variables:

HttpGet httpGet = new HttpGet( );
HttpClient client = new DefaultHttpClient();
Responder Con Cita
  #4  
Viejo 10/09/12, 17:02:24
Avatar de NaxoForum
NaxoForum NaxoForum no está en línea
Usuario muy activo
Mensajes: 1,368
 
Fecha de registro: may 2009
Mensajes: 1,368
Modelo de smartphone: Redmi Note 4
Versión de ROM: MIUI
Tu operador: Vodafone
Mencionado: 4 comentarios
Tagged: 0 hilos
pero eso desde donde lo llamo??
Tengo que llamarlo con un AsyncTask(ni puta idea lo que es lo he leido en internet) o directamente en el MainActivity ?

Yo ahora mismo estoy intentando poner un boton que ponga conectar y en ese boton llamar al readJSON (He puesto mil codigos que he encontrado en internet, y el tuyo tambien), y pongo el debug para ver que cuando llega al final, el String que retorna es correcto, pero en la linea
"HttpResponse response = client.execute(httpGet);" se sale.

El error es:

09-10 14:58:55.609: E/AndroidRuntime(624): FATAL EXCEPTION: main
09-10 14:58:55.609: E/AndroidRuntime(624): java.lang.IllegalStateException: Could not execute method of the activity
09-10 14:58:55.609: E/AndroidRuntime(624): at android.view.View$1.onClick(View.java:3591)
09-10 14:58:55.609: E/AndroidRuntime(624): at android.view.View.performClick(View.java:4084)
09-10 14:58:55.609: E/AndroidRuntime(624): at android.view.View$PerformClick.run(View.java:16966 )
09-10 14:58:55.609: E/AndroidRuntime(624): at android.os.Handler.handleCallback(Handler.java:615 )
09-10 14:58:55.609: E/AndroidRuntime(624): at android.os.Handler.dispatchMessage(Handler.java:92 )
09-10 14:58:55.609: E/AndroidRuntime(624): at android.os.Looper.loop(Looper.java:137)
09-10 14:58:55.609: E/AndroidRuntime(624): at android.app.ActivityThread.main(ActivityThread.jav a:4745)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.lang.reflect.Method.invokeNative(Native Method)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.lang.reflect.Method.invoke(Method.java:511)
09-10 14:58:55.609: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:786)
09-10 14:58:55.609: E/AndroidRuntime(624): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:553)
09-10 14:58:55.609: E/AndroidRuntime(624): at dalvik.system.NativeStart.main(Native Method)
09-10 14:58:55.609: E/AndroidRuntime(624): Caused by: java.lang.reflect.InvocationTargetException
09-10 14:58:55.609: E/AndroidRuntime(624): at java.lang.reflect.Method.invokeNative(Native Method)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.lang.reflect.Method.invoke(Method.java:511)
09-10 14:58:55.609: E/AndroidRuntime(624): at android.view.View$1.onClick(View.java:3586)
09-10 14:58:55.609: E/AndroidRuntime(624): ... 11 more
09-10 14:58:55.609: E/AndroidRuntime(624): Caused by: android.os.NetworkOnMainThreadException
09-10 14:58:55.609: E/AndroidRuntime(624): at android.os.StrictMode$AndroidBlockGuardPolicy.onNe twork(StrictMode.java:1117)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.net.InetAddress.lookupHostByName(InetAddress. java:385)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.net.InetAddress.getAllByNameImpl(InetAddress. java:236)
09-10 14:58:55.609: E/AndroidRuntime(624): at java.net.InetAddress.getAllByName(InetAddress.java :214)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.conn.DefaultClientConnectionO perator.openConnection(DefaultClientConnectionOper ator.java:137)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.conn.AbstractPoolEntry.open(A bstractPoolEntry.java:164)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.conn.AbstractPooledConnAdapte r.open(AbstractPooledConnAdapter.java:119)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.client.DefaultRequestDirector .execute(DefaultRequestDirector.java:360)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:555)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:487)
09-10 14:58:55.609: E/AndroidRuntime(624): at org.apache.http.impl.client.AbstractHttpClient.exe cute(AbstractHttpClient.java:465)
09-10 14:58:55.609: E/AndroidRuntime(624): at com.example.test99.JSONParser.readJSON(JSONParser. java:90)
09-10 14:58:55.609: E/AndroidRuntime(624): at com.example.test99.MainActivity.conectar(MainActiv ity.java:30)


Que estoy haciendo mal!!!!!!!!!!!!! Ayuda, estoy atrancadisimo.
Responder Con Cita
  #5  
Viejo 10/09/12, 17:45:48
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
Te lo está diciendo en la excepción:

Caused by: android.os.NetworkOnMainThreadException

Las cosas que requieran conectarse a la red hay que llamarlas desde otro hilo, no desde el hilo principal porque puede bloquearse. Una forma sencilla de ejecutar algo desde otro hilo es la AsyncTask.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 02:24:24 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007