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
Using a Messenger from the Bound Services of Android
Using KSOAP2
Using HTTPClient such as http://lukencode.com/2010/04/27/calling-web-services-in-android-using-httpclient/
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.
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.