2011-01-05 4 views
3

Dans mon code, je laisse les utilisateurs remplir un formulaire et j'enregistre ce formulaire dans un fichier XML sur la carte SD.Envoyer un fichier XML pour une requête POST dans Android

Maintenant, j'ai besoin d'envoyer les informations sur le fichier XML comme POSTdata à un serveur.

Comment puis-je faire cela.

J'ai déjà effectué des recherches sur Internet et j'ai trouvé quelques exemples de code, mais je ne sais pas comment ajouter le fichier XML situé sur ma carte SD.

public void sendtoRoutemobiel() { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://mysite/"); 

    try { 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); //<-- need to replace this with 
     nameValuePairs.add(new BasicNameValuePair("id", "12345"));   //<-- the data on the XML-file 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));   //<-- (I think) 

     HttpResponse response; 
     response = httpclient.execute(httppost); 
     String temp1 = EntityUtils.toString(response.getEntity()); 
     Log.d("Gabug", "Response: " + temp1); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Répondre

2

Votre entité doit être le XML et non la paire de valeurs qui est destiné à les en-têtes:

request.setEntity(new StringEntity(postData)); 

Ceci est un extrait que j'ai:

public static String getStringContent(String uri, String postData, 
     HashMap<String, String> headers) throws Exception { 

     HttpClient client = new DefaultHttpClient(); 
     HttpPost request = new HttpPost(); 
     request.setURI(new URI(uri)); 
     request.setEntity(new StringEntity(postData)); // HERE !!!!!! _______ 
     for(Entry<String, String> s : headers.entrySet()) 
     { 
      request.setHeader(s.getKey(), s.getValue()); 
     } 
     HttpResponse response = client.execute(request); 
     // .. rest 
} 
+0

Où dois-je déclarer l'emplacement de mon fichier XML? ('Environment.getExternalStorageDirectory() +" /Message.xml "') – Galip

+0

Je l'ai fait comme ceci 'httppost.setEntity (new StringEntity (Environment.getExternalStorageDirectory() +" /MessageRM.xml "));' et cela a fonctionné. Merci! – Galip

+0

Comment fecth les données dans backend alors? – onkar

Questions connexes