Search code examples
javaweb-servicesandroid-studioandroid-ksoap2androidhttpclient

Send information from android application to a Web Service and back


Let's say I need to create an android app which will, on the click of a button, send a number from a textbox to a web service. This service will send back a string saying "your number was ... " and a list of employees taken from a database sent back as XML

I do not have a physical access to the code of the web service but I know that it has a "getData" method which takes an int and returns the string. It also has a "GetEmployees" method which takes nothing and returns the XML mentionned above.

The address of the web service looks something like this : http://exemple.qc.ca/exemple/Service1.svc

After searching I came across 3 ways of communicating between an android App and a service

I am having trouble figuring out which of these methods fit my needs.

To make what I need clearer I have managed to do a sample code using Visual Studio and VB.Net:

Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)
Dim service As New   ServiceReference2.Service1Client(ServiceReference2.Service1Client.EndpointConfiguration.BasicHttpBinding_IService1)
Try
    lblReturn.Text = Await service.GetDataAsync(CInt(txtValueSent.Text))
Catch ex As Exception
    lblReturn.Text = ex.Message
    If Not ex.InnerException.Message Is Nothing Then
        lblReturn.Text = lblReturn.Text + ex.InnerException.Message
    End If
End Try

I am new to mobile programming and can't figure out how to do this using java in android studio.


Solution

  • I think the best way to achieve your work is using HTTP post, to do that you need 5 things:

    1) do a Json object: JSONObject jsonobj = new JSONObject(); //you need to fill this object

    2) Create a http client:

    DefaultHttpClient httpclient = new DefaultHttpClient();
    

    3) create a http response and a http request:

    HttpResponse httpresponse;
    HttpPost httppostreq;
    

    3) complete your http request:

    httppostreq = new HttpPost(SERVER_URL);
    

    4) attach the json object (the one you will send):

    StringEntity se = new StringEntity(jsonobj.toString());
    se.setContentType("application/json;charset=UTF-8");
    httppostreq.setEntity(se);
    

    5) to get the response: httpresponse = httpclient.execute(httppostreq); //as a Json object

    2 observations: you need to catch the possibles exceptions and always a http request must be done in a different thread.