httprequest en Android falla y la excepción es nula

Tengo una solicitud HTTP que genera un null excepción.

Aquí está el código:

public String updateRounds() {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("https://technet.rapaport.com/HTTP/Prices/CSV2_Round.aspx");

    // Add your data
    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
    nameValuePairs.add(new BasicNameValuePair("Username", _user));
    nameValuePairs.add(new BasicNameValuePair("Password", _password));
    try {
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    } catch (UnsupportedEncodingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    String response = "";
    // Execute HTTP Post Request
    try {
        response = httpclient.execute(httppost, responseHandler); // it gets
                                                                  // exception
                                                                  // here
    } catch (Exception e) {
        e.getMessage(); // e is null
    }

    return response;
}

¿Alguien tiene alguna idea de por qué sucede esto?

preguntado el 12 de junio de 12 a las 14:06

¿Tu aplicación tiene el permiso UsesInternet? También intente capturar los otros tipos de excepción que el cliente http puede lanzar en lugar del tipo genérico:

2 Respuestas

Gracias a todos por intentar ayudar. he cambiado el

e.getMessage();

a

e.printStackTrace();

Y vi que la excepción era sobre el certificado SSL. Así que manejé eso y ahora funciona. Gracias a todos.

Respondido el 13 de junio de 12 a las 11:06

Tienes problema en seguir.

String response = "";
    // Execute HTTP Post Request
    try {           
        response = httpclient.execute(httppost, responseHandler); //it gets exception here

¿Qué es controlador de respuesta?

httpclient.execute devoluciones HttpResponse y usted está tratando de devolverlo en response (que es Cadena).

así que cambia

  String response 

a

HttpResponse response

Si realmente desea devolver una cadena, agregue el siguiente código.

    bufferedReader = new BufferedReader(
               new InputStreamReader(response.getEntity().getContent()));
       StringBuffer stringBuffer = new StringBuffer("");
       String line = "";
       String LineSeparator = System.getProperty("line.separator");
       while ((line = bufferedReader.readLine()) != null) {
        stringBuffer.append(line + LineSeparator); 
       }

      bufferedReader.close();  
      return stringBuffer.toString();

Respondido el 12 de junio de 12 a las 14:06

Bueno, creo que esto no es muy correcto. el cliente http devuelve una cadena. - orelzión

BasicResponseHandler procesa la respuesta y eso es lo que devuelve la cadena. Así que ese bit no está mal. - Dazzy_G

El código que pegué aquí funciona en mi extremo. Así que pensé en ayudarte. Gracias :) - vipul

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.