Bonjour à tous,
je développe une appli qui se connecte a une base de données distante.
Je souhaiterais que lorsque le serveur est injoignable ou qu'il n y a pas de connexion réseau l'appli affiche un toast plutot que planté.
Comment procéder?
Voici ma fonction qui se connecte au serveur et effectue une requete :
VOici ma classe qui effectue le traitement de la requete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public JSONArray getJSONFromUrl(String Url, String param) { // Making HTTP request JSONArray jarray = null; try { url1 = new URL(Url); httpUrl = (HttpURLConnection)url1.openConnection(); httpUrl.setDoOutput(true); httpUrl.setRequestMethod("POST"); httpUrl.setConnectTimeout(10000); urlParametres = param; Log.d("param", urlParametres); writer = new OutputStreamWriter(httpUrl.getOutputStream()); if(urlParametres != null && urlParametres != ""){ writer.write(urlParametres); } writer.flush(); writer.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { Log.d("coonexion",""+getState()); if(httpUrl.getResponseCode() == 200){ in = new BufferedInputStream(httpUrl.getInputStream()); json = readStream(in); Log.d("longueur", ""+json.length()); if(json.length() > 2){ //Log.d("texte json",json); jarray = new JSONArray(json); } else{ Log.d("retour","vide"); jarray = new JSONArray(); } }else{ Log.d("connexon","echec"); } } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } return jarray; }
Merci d'avance!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 public class JSONParse extends AsyncTask<String, Integer, JSONArray> { JSONArray jsonArray; ProgressDialog progress; @Override protected void onProgressUpdate(Integer... values){ super.onProgressUpdate(values); } public JSONParse(){ } @Override protected void onPreExecute() { super.onPreExecute(); progress = new ProgressDialog(getActivity()); progress.setMessage("Ce ne sera pas long ... Normalement"); progress.show(); checkInternetConenction(); } @Override protected JSONArray doInBackground(String... args) { JSONParser jParser = new JSONParser(); // Getting JSON from URL jsonArray = jParser.getJSONFromUrl(url, param); Log.d("taille ja", ""+jsonArray.length()); Log.d("etat doIn", ""+jParser.getState()); return jsonArray; } @Override protected void onPostExecute(JSONArray json) { json = jsonArray; Log.d("la",""+json.length()); if(json.length()>0){ int id = 0; extras = new Bundle(); for(int i=0;i<json.length();i++){ try { JSONObject e = json.getJSONObject(i); if(e != null){ id = e.getInt("id_utilisateur"); nom= e.getString("nom"); editor.putString("nom", nom); editor.putInt("id", id); } } catch (JSONException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } if (progress.isShowing()) { progress.dismiss(); } editor.commit(); extras.putInt("id", id); Intent RechercheActivite = new Intent(getActivity(), MainActivity.class); RechercheActivite.putExtras(extras); startActivity(RechercheActivite); } else{ Toast.makeText(getActivity(), "id ou mdp incorrect", Toast.LENGTH_SHORT).show(); } }
PS: je suis au Canada et vais donc me coucher (3h du matin) donc désolé si il y a des réponses rapides et que je ne répond pas![]()
Partager