Je publie des données dans la base de données à l'aide de Volley et j'obtiens la réponse jsonarray suivante.
[
{
"nickname":"panikos",
"username":"[email protected]",
"user_type":"LEADER",
"latest_steps":"0"
}
]
Ceci est un exemple de mon code qui ne se déconnecte malheureusement pas ou ne débogue pas la variable de l'objet "pseudo" :(.
final JsonArrayRequest jsonObjReq1 = new
JsonArrayRequest(AppConfig.URL_GET_TEAM, jsonObject,
new com.Android.volley.Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
}, new com.Android.volley.Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("TAG", "Error: " + error.getMessage());
//pDialog.dismiss();
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
};
Des idées? Suis-je en train de manquer quelque chose?
Merci.
Si le problème est peut-être - vous obtenez déjà response
en tant que JSONArray
.
Vous pouvez donc appeler
JSONObject jresponse = response.getJSONObject(0);
et si vous avez plus d'un objet en réponse, alors
for(int i = 0; i < response.length(); i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname", nickname);
}
Enlève ça :
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jresponse =
jsonArray.getJSONObject(i);
String nickname =
jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
et ajouter :
try {
JSONObject jresponse = response.getJSONObject(0);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}catch (JSONException e) {
e.printStackTrace();
}
Le code semble bon, mais je pense que vous pourriez manquer un appel pour ajouter jsonObjReq1
dans la file d'attente des demandes. Je suggère d'utiliser Singleton Pattern .
Fixé!!!
@Override
public void onResponse(JSONArray response) {
Log.d("TAG", response.toString());
try {
Log.d("JsonArray",response.toString());
for(int i=0;i<response.length();i++){
JSONObject jresponse = response.getJSONObject(i);
String nickname = jresponse.getString("nickname");
Log.d("nickname",nickname);
}
} catch (JSONException e) {
e.printStackTrace();
}
//pDialog.dismiss();
}
Il n'était pas nécessaire de créer un nouveau JSONArray. Il a été créé à l'intérieur de la méthode onResponse (). Le prochain projet que je suis chargé de faire va avoir des webservices.omg plus compliqués !!!