2010-05-18 4 views
2

est-il possible que j'envoie une demande de mon application Android à un service web et en retour je reçois une donnée par exemple un fichier XML du service web que j'analyse en android ?Envoyer et recevoir des données d'un service web en utilisant android

Merci

kai

+2

Oui, c'est tout à fait possible, avec quels types de services espérez-vous interagir? – JeremyFromEarth

+0

Je pense que vous avez besoin d'un point de départ à propos des services Web avec Android. Cet article est un bon début IMHO http://senior.ceng.metu.edu.tr/2009/praeda/2009/01/11/a-simple-restful-client-at-android/ –

Répondre

2

C'est une méthode que j'ai écrit pour gérer tout cela. Dans mon cas, j'utilise JSON pour les données que je reçois, car il est beaucoup plus compact que XML. Je suggère d'utiliser la bibliothèque GSON de Google pour convertir des objets en provenance et à JSON comme ça:

Gson gson = new Gson(); 
JsonReply result = gson.fromJson(jsonResult, JsonReply.class); 

Où JsonReply est juste un POJO pour la tenue de certaines données. Vous pouvez voir les documents java de Google sur la façon d'utiliser gson dans votre cas. En plus je dois dire que cette méthode fonctionne avec toutes sortes de caractères. Je l'utilise principalement pour les données sendign cyrillic.

public String postAndGetResult(String script, List<NameValuePair> postParameters){ 
    String returnResult = ""; 
    BufferedReader in = null; 
    try { 
     HttpParams httpParameters = new BasicHttpParams(); 
     HttpProtocolParams.setContentCharset(httpParameters, "UTF-8"); 
     HttpProtocolParams.setHttpElementCharset(httpParameters, "UTF-8"); 
     HttpClient client = new DefaultHttpClient(httpParameters); 
     client.getParams().setParameter("http.protocol.version", 
       HttpVersion.HTTP_1_1); 
     client.getParams().setParameter("http.socket.timeout", 
       new Integer(2000)); 
     client.getParams().setParameter("http.protocol.content-charset", 
       "UTF-8"); 
     httpParameters.setBooleanParameter("http.protocol.expect-continue", 
       false); 
     HttpPost request = new HttpPost(SERVER + script + "?sid=" 
       + String.valueOf(Math.random())); 
     request.getParams().setParameter("http.socket.timeout", 
       new Integer(5000)); 
     UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
       postParameters, "UTF-8"); 
     request.setEntity(formEntity); 
     HttpResponse response = client.execute(request); 
     in = new BufferedReader(new InputStreamReader(response.getEntity() 
       .getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 
     returnResult = sb.toString(); 
    } catch (Exception ex) { 
     return ""; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
      } 
     } 
    } 
    return returnResult; 
} 

J'espère que cela aide. Amusez-vous :)

Questions connexes