Fehler bei HttpClient abfangen

  • Antworten:4
  • Bentwortet
Otmar Schramm
  • Forum-Beiträge: 20

04.05.2014, 16:40:56 via Website

Hallo!
Ich versuche eine Verbindung von der App zum PHP-Script auf dem Webserver aufzubauen. Das klappt auch alles wenn der Server antwortet!
Ist der Server nicht erreichbar...passiert gar nichts... Bis irgendwann (ich denke ein timeout) die App abraucht....
Dabei habe ich mittlerweile schon so viele Exception-Handles eingebaut.
Wohl scheinbar nicht an der richtigen Stelle.
Hier der code (gekürzt):

@Override
protected String doInBackground(WebserverDialogFragment... params) {
//Hier Initialisierungen von Strings...

try{
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(hier steht die url des php Scriptes);
    Log.d(TAG,  httppost erzeugt);
    HttpResponse response = httpclient.execute(httppost);
    Log.d(TAG,  response erzeugt );
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
}catch(IOException ioe){
    Log.d(TAG, IOException  + ioe.toString());
}catch(Exception e){
    Log.d(TAG, Error in http connect + e.toString());
}
try{
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,utf-8),8);
    sb = new StringBuilder();
    ......
    result = sb.toString();
}catch(Exception e) {
    Log.d(TAG, Error converting result + e.toString());
}
if(result != ''''){
    Log.d(TAG, result not null => Einkaufsliste löschen);
    //ToDo
}
try{
    JSONArray jArray = new JSONArray(result);
    JSONObject json_data = null;
    for(int i=0; i<jArray.length(); i++) {
        //ToDo
    }
}catch(JSONException e1) {
    Log.e(TAG, doInBackground-JSONObjekt Exception:  + e1.toString());
    Toast.makeText(getBaseContext(), No Data Found, Toast.LENGTH_LONG).show();
}catch(ParseException e1) {
    Log.d(TAG, doInBackground-ParseException:  + e1.toString());
}catch(Exception e){
    Log.d(TAG, doInBackground-Exception:  + e.toString());
}
return returnString;

}

Die Log-Meldung: httppost erzeugt kommt immer noch.
Doch die response erzeugt ....kommt nicht mehr....
Habt ihr eine Idee an welcher Stelle ich vergessen habe die Exception (welche?) abzufangen!

Danke
otmar

— geändert am 04.05.2014, 16:45:36

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.05.2014, 16:46:21 via Website

Was gibt denn LogCat für eine Exception aus?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Otmar Schramm
  • Forum-Beiträge: 20

04.05.2014, 16:56:40 via Website

IOException org.apache.http.conn.HttpHostConnectException
FATAL EXCEPTION: AsyncTask #1
An error occured while executing doInBackground()

Die erste ist ja auch logisch!
Aber sie soll ja abgefangen werden.... Und nicht die App abstürzen...
Danke dir!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.05.2014, 17:49:09 via Website

Das Problem ist, wenn im ersten try block eine Exception auftritt dann wird diese abgefangen.
Trotzdem wird der 2. block auch noch ausgeführ in der übergebene Input stram ist leer da oben die genannte exception aufgetreten ist..
Ambesten eine if abrage oder alles in ein try reinpacken

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Otmar Schramm
  • Forum-Beiträge: 20

04.05.2014, 18:20:16 via Website

Jo! So bleibt sie ;)

Antworten