Bonjour à tous,
Comme dit dans le titre j'aimerais récupérer des données de plusieurs campus (pour commencer je n'en prends qu'un seul) à partir de la méthode Http GET sur un site que j'ai crée en local, depuis mon app Android.
Voici une méthode que j'ai crée dans cet objectif:
classe WebCampus:
Les données à récupérer sont de cette forme (en JSON):
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 public Campus convertToCampus(JSONObject object) throws JSONException{ webManager = new WebServiceManager(); webManager.sendGetRequest("http://10.0.2.2:8080/NoteTonSTA/rest/campuses/1");//tester url campus = new Campus(); //récupération des attributs json de l'url try { campus.setName(object.getString("name")); campus.setId(object.getLong("id")); } catch (Exception e) { String tag = "WebCampusError"; Log.e(tag , "impossible de parser les attributs: "+e.getMessage(),e); } return campus;//on retourne un objet campus }
Voici mon activity:
Code : Sélectionner tout - Visualiser dans une fenêtre à part {"id":"1","name":"Lyon"}
Et pour finir mon WebServiceManager pour la connexion:
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 package com.supinfo.notetonsta; import org.json.JSONException; import org.json.JSONObject; import com.supinfo.notetonsta.model.Campus; import com.supinfo.notetonsta.web.WebCampus; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; //main activity public class NoteTonSTA2Activity extends Activity { /** Called when the activity is first created. */ Campus campus; LinearLayout mainLayout;//layout principal ListView listView;//listView du main.xml ListAdapter la; JSONObject object; WebCampus webCampus; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); object = new JSONObject(); webCampus = new WebCampus(); try { //on va lister tous les campus dans cette activity campus = webCampus.convertToCampus(object); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void addCampus(){ } }
Le problème c'est que je lève l'exception suivante (logs):
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 package com.supinfo.notetonsta.util; import java.net.URI; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import android.util.Log; public class WebServiceManager { private String result; private HttpClient httpClient; private HttpGet httpGet; private URI uri; public String sendGetRequest(String address){ result = null; try { httpClient = new DefaultHttpClient(); httpGet = new HttpGet(); uri = new URI(address); httpGet.setURI(uri); HttpResponse response = httpClient.execute(httpGet);//on execute la requête http result = EntityUtils.toString(response.getEntity()); } catch (Exception e) { Log.e(address, "Connexion impossible, problème de droit ou de port deja utilise: "+e.getMessage(),e); } return result; } public WebServiceManager() { } }
Mon objectif serait donc de récupérer l'attribut 'name' ainsi que l'attribut 'id' pour pouvoir ensuite les afficher. Quelqu'un aurait-il des idées à ce sujet?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 03-28 03:09:47.619: E/WebCampusError(5192): impossible de parser les attributs: No value for name
Partager