2012-09-12 3 views
0

Je situation où je dois recevoir une réponse JSON Chunked constante, chaque fois que je reçois une réponse que je dois analyser le JSON de mettre à jour l'interface utilisateur sur l'état actuel de l'opération.Android recevant une réponse chunked JSON

Je ne peux pas trouver une méthode avant droit de chaque réponse reçue individuellement et après l'information à l'interface utilisateur jusqu'à ce que la réponse on a fini de recevoir.

Si quelqu'un pouvait faire la lumière sur ce que je serais reconnaissant !!

J'ai 101 façons différentes de faire l'appel http .. Je dois juste le bon avec la bonne façon de lire la réponse.

--edit - Juste pour ajouter. Le problème que j'ai est pas la lecture des données JSON, il reçoit chaque bloc de données séparément et l'affichage de retour à l'interface entre chaque morceau - NathofGod 27 secondes modifier il y a

 DefaultHttpClient http_client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(url); 
     HttpResponse response = http_client.execute(httpGet); 

     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     HttpEntity entity = response.getEntity(); 

     InputStream in = entity.getContent(); 
     StringBuffer out = new StringBuffer(); 
     byte[] b = new byte[4096]; 
     int n = in.read(b); 
     out.append(new String(b, 0, n));   
     String resultdata = out.toString(); 

Certains Exemple JSON

23a 
{"header":{"status":{"code":0,"desc":"Ok"},"sessionId":"3olpgjktvj0a52dbim6lk8hvet"},"summary":{"status":{"code":0,"desc":"Ok"},"inProgess":18,"errored":0},"storeItems":[{"storeItemId":"4ff41f0bdc6d34b3daaf4d8a","name":"Mcvities Digestive 250G","quantity":1,"itemPrice":0.89,"totalPrice":0.89,"recipeIngredients":[{"name":"250 g/8¾oz digestive biscuits, crushed","amount":1.0,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}}]} 
3c1 
{"header":{"status":{"code":0,"desc":"Ok"},"sessionId":"3olpgjktvj0a52dbim6lk8hvet"},"summary":{"status":{"code":0,"desc":"Ok"},"inProgess":17,"errored":0},"storeItems":[{"storeItemId":"4ff41f0bdc6d34b3daaf4d8a","name":"Mcvities Digestive 250G","quantity":1,"itemPrice":0.89,"totalPrice":0.89,"recipeIngredients":[{"name":"250 g/8¾oz digestive biscuits, crushed","amount":1.0,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}},{"storeItemId":"4ff41a73dc6d34b3daaf46da","name":"Rachels Organic Unsalted Butter 250G","quantity":1,"itemPrice":1.65,"totalPrice":1.65,"recipeIngredients":[{"name":"100 g/3½oz butter","amount":0.4,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}}]} 
550 
{"header":{"status":{"code":0,"desc":"Ok"},"sessionId":"3olpgjktvj0a52dbim6lk8hvet"},"summary":{"status":{"code":0,"desc":"Ok"},"inProgess":16,"errored":0},"storeItems":[{"storeItemId":"4ff41f0bdc6d34b3daaf4d8a","name":"Mcvities Digestive 250G","quantity":1,"itemPrice":0.89,"totalPrice":0.89,"recipeIngredients":[{"name":"250 g/8¾oz digestive biscuits, crushed","amount":1.0,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}},{"storeItemId":"4ff41a73dc6d34b3daaf46da","name":"Rachels Organic Unsalted Butter 250G","quantity":1,"itemPrice":1.65,"totalPrice":1.65,"recipeIngredients":[{"name":"100 g/3½oz butter","amount":0.4,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}},{"storeItemId":"4ff417c0dc6d34b3daaf28d3","name":"Menier Milk Chocolate Patissier 100G","quantity":1,"itemPrice":1.0,"totalPrice":1.0,"recipeIngredients":[{"name":"100 g/3½oz grated chocolate","amount":1.0,"recipe":{"url":"http://www.bbc.co.uk/food/recipes/baileysandchocolatec_72293","title":"Baileys and chocolate cheesecake"}}],"status":{"code":3101,"desc":"Store item send to supermarket Ok"}}]} 
+0

Depuis API 11, il existe une classe JSONReader qui fournit des méthodes utiles dans ce but, mais est-ce trop élevé? – harism

+0

Je vais bien lire les données JSON, il est juste de recevoir chaque bloc de données une à la fois et l'affichage à l'interface utilisateur inbetween – NathofGod

+0

Eh oui, je compris et JSONReader semble être une sorte d'un analyseur de traction, vous pouvez utiliser à cette fin. – harism

Répondre

0
int n = in.read(b); 
while(n>0){ 
    out.append(new String(b, 0, n); 
    n = in.read(b); 
} 

String resultData = out.toString();