Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android, send and receive XML via HTTP POST method

There is a relevant question, but I could not get the answer clearly.

I would like to POST a short xml code

<aaaLogin inName="admin" inPassword="admin123"/>

to a specific URL address over HTTP. The Web service will send me back a XML code. The important part is that I will parse the received XML, and I want to store that as a file.

    // Create a new HttpClient and Post Header  
    HttpClient httpclient = new DefaultHttpClient();  
    HttpPost httppost = new HttpPost("http://192.168.192.131/"); //URL address

    StringEntity se = new StringEntity("<aaaLogin inName=\"admin\" inPassword=\"admin123\"/>",HTTP.UTF_8); //XML as a string
    se.setContentType("text/xml"); //declare it as XML
    httppost.setHeader("Content-Type","application/soap+xml;charset=UTF-8");
    httppost.setEntity(se);

    BasicHttpResponse httpResponse = (BasicHttpResponse) httpclient .execute(httppost);
    tvData.setText(httpResponse.getStatusLine().toString()); //text view is expected to print the response

there is something wrong with receiving the response. Besides, I did not write anything to save the received XML as a file. Can someone write a code snippet?

like image 472
cevikarda Avatar asked Feb 16 '11 06:02

cevikarda


3 Answers

Ok, I have figured out soon after I posted this question. This code here works fine:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.192.131/");

try {
    StringEntity se = new StringEntity( "<aaaLogin inName=\"admin\" inPassword=\"admin123\"/>", HTTP.UTF_8);
    se.setContentType("text/xml");
    httppost.setEntity(se);

    HttpResponse httpresponse = httpclient.execute(httppost);
    HttpEntity resEntity = httpresponse.getEntity();
    tvData.setText(EntityUtils.toString(resEntity));        
} catch (ClientProtocolException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
like image 166
cevikarda Avatar answered Oct 21 '22 23:10

cevikarda


You can get the content of the response using:

String responseXml = EntityUtils.toString(httpResponse.getEntity());

You can then write this to a file using something like this.

there is something wrong with receiving the response

Since you havn't said what is wrong with receiving the response it's somewhat difficult to help you with this point.

like image 31
dave.c Avatar answered Oct 22 '22 01:10

dave.c


Why not use Spring RestTemplate in Spring for Android?

like image 22
Ross Bu Avatar answered Oct 22 '22 00:10

Ross Bu