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

[SOLUCIONADO] Problemas con java.lang.NullPointerException

Estas en el tema de Problemas con java.lang.NullPointerException en el foro de Java en Foros del Web. Hola, mucho gusto actualmente soy nuevo en programacion JAVA y estoy iniciando a programar en Android Con JAVA. hoy tengo 1 problema, estaba haciendo una ...
  #1 (permalink)  
Antiguo 20/03/2015, 14:03
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 13 años, 5 meses
Puntos: 10
Problemas con java.lang.NullPointerException

Hola, mucho gusto

actualmente soy nuevo en programacion JAVA y estoy iniciando a programar en Android Con JAVA.

hoy tengo 1 problema, estaba haciendo una class para facilitarme las cosas a la hora de enviar peticiones POST. pero no me marca ningun error de Syntaxis, el problema viene cuando ejecuto la aplicacion y presiono el boton que ejecuta la Class

la Class JAVA es esta:

Código Java:
Ver original
  1. package com.example.admin.noticias;
  2.  
  3. /**
  4.  * Created by Admin on 20/03/2015.
  5.  */
  6. import java.io.IOException;
  7. import java.io.UnsupportedEncodingException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import org.apache.http.HttpEntity;
  11. import org.apache.http.HttpResponse;
  12. import org.apache.http.NameValuePair;
  13. import org.apache.http.client.ClientProtocolException;
  14. import org.apache.http.client.HttpClient;
  15. import org.apache.http.client.entity.UrlEncodedFormEntity;
  16. import org.apache.http.client.methods.HttpPost;
  17. import org.apache.http.impl.client.DefaultHttpClient;
  18. import org.apache.http.message.BasicNameValuePair;
  19. import org.apache.http.util.EntityUtils;
  20.  
  21.  
  22. public class http_request {
  23.     String url;
  24.     List<NameValuePair> parametros;
  25.  
  26.     protected void http_request(){
  27.        this.parametros = new ArrayList<NameValuePair>();
  28.     }
  29.  
  30.     protected void url(String url) {
  31.         this.url = url;
  32.     }
  33.     protected void parametro(String key, String value) {
  34.         this.parametros.add(new BasicNameValuePair(key, value));
  35.     }
  36.     protected String post(){
  37.         try {
  38.             HttpClient httpclient = new DefaultHttpClient();
  39.             HttpPost httppost = new HttpPost(this.url);
  40.             httppost.setEntity(new UrlEncodedFormEntity(this.parametros));
  41.             HttpResponse resp = httpclient.execute(httppost);
  42.             HttpEntity ent = resp.getEntity();
  43.             String text = EntityUtils.toString(ent);
  44.             return text;
  45.         } catch (UnsupportedEncodingException e) {
  46.             return "Error: "+e;
  47.         } catch (ClientProtocolException e) {
  48.             return "Error "+e;
  49.         } catch (IOException e) {
  50.             return "Error: "+e;
  51.         }
  52.  
  53.     }
  54. }

donde la ejecuto es aqui:
Código Java:
Ver original
  1. public class MainActivity extends ActionBarActivity {
  2.  
  3.     private class enviar_post extends AsyncTask<Void, String, String> {
  4.         @Override
  5.         protected String doInBackground(Void... parms) {
  6.             http_request conexion = new http_request();
  7.             conexion.url("http://fxxxxxxx.com/android/login.php");
  8.             conexion.parametro("username", "Prueba 1");
  9.             conexion.parametro("password", "Prueba 2");
  10.             String result = conexion.post();
  11.             return result;
  12.         }
  13.  
  14.         protected void onPostExecute(String... parms) {
  15.             Intent ventana2 = new Intent(MainActivity.this, pantalla_2.class);
  16.             //Bundle contenido = new Bundle();
  17.             //contenido.putString("resultado", parms[0]);
  18.             //ventana2.putExtras(contenido);
  19.             startActivity(ventana2);
  20.             Toast.makeText(MainActivity.this, parms[0], Toast.LENGTH_SHORT).show();
  21.         }
  22.     }
  23.  
  24.  
  25.  
  26.  
  27.  
  28.     @Override
  29.     protected void onCreate(Bundle savedInstanceState) {
  30.         super.onCreate(savedInstanceState);
  31.         setContentView(R.layout.activity_main);
  32.         Button boton = (Button)findViewById(R.id.boton);
  33.         boton.setOnClickListener(new View.OnClickListener() {
  34.             @Override
  35.             public void onClick(View v) {
  36.                 //Toast.makeText(MainActivity.this, "INICIANDO", Toast.LENGTH_SHORT).show();
  37.  
  38.  
  39.                new enviar_post().execute();
  40.             }
  41.         });
  42.     }

Donde dice "new enviar_post().execute();"

llamo al Metodo de DoBackground. todo sin errores de sintaxis pero la aplicaicon se Crashea al presionar el boton y en la consola me sale lo siguiente.

Process: com.example.admin.noticias, PID: 399
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(F utureTask.java:355)
at java.util.concurrent.FutureTask.setException(Futur eTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.jav a:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTas k.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at com.example.admin.noticias.http_request.parametro( http_request.java:34)
at com.example.admin.noticias.MainActivity$enviar_pos t.doInBackground(MainActivity.java:21)
at com.example.admin.noticias.MainActivity$enviar_pos t.doInBackground(MainActivity.java:16)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.jav a:237)
************at android.os.AsyncTask$SerialExecutor$1.run(AsyncTas k.java:231)
************at java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1112)
************at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:587)
************at java.lang.Thread.run(Thread.java:841)


Alguna idea?
  #2 (permalink)  
Antiguo 21/03/2015, 01:30
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problemas con java.lang.NullPointerException

Buenas,

Aclarar que el nullPointerException es una excepción que se produce en runtime, nunca en compilación.

Sucede cuando se intenta acceder a un método o propiedad de un objeto sin que éste haya sido creado.

En tu caso la traza te indica la línea en la que se produce:
Caused by: java.lang.NullPointerException
at com.example.admin.noticias.http_request.parametro( http_request.java:34)


En dicha línea estás intentando acceder al array de parámetros para añadirle un elemento:
this.parametros.add(new BasicNameValuePair(key, value));

Si embargo, parámetros es null ya que no está inicializado. Me da la sensación de que tratas de inicializarlo en el constructor de la clase.
Sin embargo esto:
Código Java:
Ver original
  1. protected void http_request(){
No es un constructor, sino un método.

Los constructores no tienen tipo de retorno y salvo algunas excepciones tienen que ser públicos para acceder a ellos. Reemplaza esa linea por esto:
Código Java:
Ver original
  1. public http_request(){

Y se debería solucionar.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 21/03/2015, 15:53
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 13 años, 5 meses
Puntos: 10
Respuesta: Problemas con java.lang.NullPointerException

Gracias, me has solucionado el Problema :D
Saludos

Etiquetas: android, sdk
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 18:04.