HttpRequest в Андроид не удается, и исключением является нулем


У меня есть HTTP-запрос, который вызывает исключение null.

Вот код:

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;
}

Кто-нибудь имеет представление о том, почему это происходит?

2 3

2 ответа:

Спасибо всем за то, что пытались помочь. Я изменил

e.getMessage();

К

e.printStackTrace();

И я увидел, что исключение было связано с сертификатом ssl. Так что я справился с этим, и теперь это работает. Спасибо всем.

У вас есть проблема в следующем.

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

Что такое responseHandler?

httpclient.execute возвращает HttpResponse , и вы пытаетесь вернуть его в response (который является строкой).

Так Измени

  String response 

К

HttpResponse response

Если вы действительно хотите вернуть строку, добавьте следующий код.

    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();