2011-01-05 4 views
3

In meinem Code lasse ich Benutzer ein Formular ausfüllen und ich speichere dieses Formular in einer XML-Datei auf der SD-Karte.Senden Sie XML für POST-Anfrage in Android

Jetzt muss ich die Informationen über die XML-Datei als POSTdata an einen Server senden.

Wie kann ich das tun?

Ich habe bereits im Internet gesucht und einen Beispielcode gefunden, aber ich weiß nicht, wie ich die XML-Datei auf meiner SD-Karte hinzufügen soll.

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(); 
    } 
} 

Antwort

2

Ihr Unternehmen muss die XML und nicht das Wertepaar sein, das für die Header gemeint ist:

request.setEntity(new StringEntity(postData)); 

Dieses ein Ausschnitt ist, die ich habe:

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

Also, wo ich den Speicherort meiner XML-Datei deklarieren? ('Environment.getExternalStorageDirectory() +" /Message.xml "') – Galip

+0

Ich mochte es 'httppost.setEntity (new StringEntity (Environment.getExternalStorageDirectory() +" /MessageRM.xml "));' und es hat funktioniert. Vielen Dank! – Galip

+0

Wie fechten Sie dann die Daten im Backend? – onkar