J'utilise BitNami pour tester mon projet django. Je crée une connexion à partir d'Android, en lui passant une URL pour récupérer des données de la base de données. Les données sont sous cette forme:Doctype renvoyé par le serveur au lieu de String?
{"apps": ["False", "Hello from notepade++", "My App", "Test"]}
est ici que je suis aller chercher et de recevoir les données dans Android
public static ArrayList<String> getApps(){
HttpClient httpclient = new DefaultHttpClient();
HttpResponse responseCategories;
int categoriesStatusCode =0;
String responseCategoriesString = "";
ArrayList<String> out = new ArrayList<String>();
HttpGet httpgetCategories = new HttpGet("http://safwany/sampleproject/applications/fetch_apps");
try {
responseCategories = httpclient.execute(httpgetCategories);
categoriesStatusCode = responseCategories.getStatusLine().getStatusCode();
try {
responseCategoriesString = EntityUtils.toString(responseCategories.getEntity());
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
} catch (ClientProtocolException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
if(categoriesStatusCode==200){
JSONObject object;
try {
System.out.println(responseCategoriesString);
object = new JSONObject(responseCategoriesString);
JSONArray Jarray = object.getJSONArray("apps");
for(int i = 0; i < Jarray.length(); i++)
{
String s = (String) Jarray.get(i);
out.add(s);
//categoriesMap.put(s, 0);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return out;
}
Lorsque je tente d'imprimer responseCategoriesString, je reçois le texte suivant:
04-01 22:55:56.335: I/System.out(9325): <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><meta http-equiv="refresh" content="0;url=http://search.tedata.net/main?InterceptSource=0&ClientLocation=eg&ParticipantID=esrkzqp9pwh62lmydaf4wsy3i92taus2&FailureMode=1&SearchQuery=&FailedURI=http%3A%2F%2Fsafwany%2Fsampleproject%2Fapplications%2Ffetch_apps&AddInType=4&Version=2.1.8-1.90base&Referer=&Implementation=0"/><script type="text/javascript">url="http://search.tedata.net/main?InterceptSource=0&ClientLocation=eg&ParticipantID=esrkzqp9pwh62lmydaf4wsy3i92taus2&FailureMode=1&SearchQuery=&FailedURI=http%3A%2F%2Fsafwany%2Fsampleproject%2Fapplications%2Ffetch_apps&AddInType=4&Version=2.1.8-1.90base&Referer=&Implementation=0";if(top.location!=location){var w=window,d=document,e=d.documentElement,b=d.body,x=w.innerWidth||e.clientWidth||b.clientWidth,y=w.innerHeight||e.clientHeight||b.clientHeight;url+="&w="+x+"&h="+y;}window.location.replace(url);</script></head><body></body></html>
04-01 22:55:56.335: W/System.err(9325): org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
Comme vous pouvez le voir: vous récupérez html au lieu de json. Donc, d'une manière ou d'une autre, votre serveur renvoie des données erronées ou vous ne les demandez pas correctement. Lorsque vous avez également créé la partie django, vérifiez également s'il y a des erreurs et déboguez pourquoi la requête envoyée renvoie des données erronées. – WarrenFaith
c'est la vue en django fetch_apps def (demande): applications = App.objects.all() apps_array = [] pour des applications dans: apps_array.append (a.name) apps_array.sort() res = json.dumps ({"apps": apps_array}) return HttpResponse (res, mimetype = 'application/json') Je pense que c'est correct car quand j'essaye l'url dans le navigateur, données correctement – omarsafwany