2 pièce(s) jointe(s)
Volley, JsonRequest, problème d'affichage du résultat
Bonjour a tous,
J'essaie d'accéder aux données de json via Android en utilisant Volley Library, et pour le backend du serveur web, j'ai utilisé python. Voici mon code côté serveur:
Code:
1 2 3 4 5
|
def showAndroid(request):
users=User.objects.all()
data = serializers.serialize('json', users, fields=('nom', 'prenom', 'postnom', 'mail'))
return HttpResponse(data, content_type='application/json') |
Lorsque j’accède à l'URL, j'obtiens le résultat suivant:
Pièce jointe 312369
Et voici mon code dans Android studio:
Code:
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 66 67 68 69 70 71 72 73 74 75 76 77 78
|
package com.example.lislis.mesexercices;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class UserJson extends AppCompatActivity {
EditText nom,prenom,postnom,email;
Button ajouter,voir;
TextView list;
RequestQueue requestQueue;
String insertUrl="http://192.168.1.14:8000/webservices/insert-users/";
String showUrl="http://192.168.1.14:8000/webservices/afficher-users/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.user_json);
nom=(EditText)findViewById(R.id.nom);
prenom=(EditText)findViewById(R.id.prenom);
postnom=(EditText)findViewById(R.id.postnom);
email=(EditText)findViewById(R.id.email);
ajouter=(Button) findViewById(R.id.ajouter_user);
voir=(Button)findViewById(R.id.afficher_users);
list=(TextView)findViewById(R.id.list_users);
requestQueue= Volley.newRequestQueue(this);
voir.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, showUrl, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray users=response.getJSONArray("data");
for(int i=0;i<users.length();i++)
{
JSONObject user=users.getJSONObject(i);
String fname=user.getString("prenom");
String lname=user.getString("nom");
String mname=user.getString("postnom");
String mail=user.getString("mail");
list.append(fname+" "+lname+" "+mname+" "+mail+"\n");
System.out.println("Tototo\n"+fname+" "+lname+" "+mname+" "+mail+"\n");
}
list.append("===\n=");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(jsonObjectRequest);
}
});
}
} |
Mais lorsque je clique sur le bouton pour afficher les données JSON, dans mon moniteur de serveur django, je peux voir une requête GET réussie avec un code d'état 200:
Pièce jointe 312234
Mais pour tester si tout va bien dans le serveur, j'ai essayé de créer un seul fichier HTML avec une requête Ajax et j'ai copié le fichier sur un autre ordinateur dans mon même WLAN, j'accede a json sans problème. Y a-t-il un problème avec mon code source?
Merci d'avance