How to get a message from Webservice using KSOAP2 and Android

I tried to make a simple ksoap2 tutorial. This is a link

My problem is that I only get the answer if I use SoapPrimitive and Ksoap ... 2.6.4.jar with Ksoap ... 2.4.jar and "SoapObject response = (SoapObject) envelope.getResponse ();" I have an exception.

How should I use SoapObject?

This is my code:

public class WS_Auth_ComplexObjectsActivity extends Activity { /** Called when the activity is first created. */ String NAMESPACE = "http://WS.androidroleplay.fk4.de.hs_bremen.de"; String METHOD_NAME = "GetSumOfTwoInts"; String SOAP_ACTION = "http://WS.androidroleplay.fk4.de.hs_bremen.de/GetSumOfTwoInts"; String URL = "http://192.168.178.28:8080/WebProject_DB16/services/HelloWorldWS?wsdl"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME); PropertyInfo pi = new PropertyInfo(); pi.setName("Operand1"); pi.setValue(2); pi.setType(int.class); Request.addProperty(pi); PropertyInfo pi2 = new PropertyInfo(); pi2.setName("Operand2"); pi2.setValue(5); pi2.setType(int.class); Request.addProperty(pi2); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(Request); // envelope.addMapping(NAMESPACE, "Integer",); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try { // Hier folgt die Authentifikation mit dem User Admin und Passwort Admin List<HeaderProperty> headerList = new ArrayList<HeaderProperty>(); headerList.add(new HeaderProperty("Authorization", "Basic " + org.kobjects.base64.Base64.encode("tomcat:tomcat".getBytes()))); // "username:password" androidHttpTransport.call(SOAP_ACTION, envelope, headerList); androidHttpTransport.debug=true; SoapObject response = (SoapObject)envelope.getResponse(); String result = response.getAttributeAsString(0); TextView tv = (TextView)findViewById(R.id.TextView); tv.setText("Text: " + result); //"CategoryId: " +C.getCategoryId() + " Name: " + C.getName() + " Description: " + C.getDescription() } catch(Exception e) { e.printStackTrace(); } } } 

And this is my web service:

 public class HelloWorldWS { public int GetSumOfTwoInts(int Operand1, int Operand2 ) { System.out.println(Operand1+ " + "+ Operand2 +" = "+ (Operand1 + Operand2)); return Operand1 + Operand2; } } 
0
source share
3 answers

Your service method returns only an integer value. In ksoap2, if the webservice answer has only one value (integer, string ..), you should use

 SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 

and response.toString(); is the result you want. If your answer has complex types (objects), you should use

 SoapObject response = (SoapObject) envelope.getResponse(); 

and analyze it.

0
source

try this one

 SoapObject resultObj = (SoapObject) envelope.bodyIn; String result = (String)resultObj.getProperty(0); 
0
source

try it

 String result = envelope.getResponse().toString(); return result; 
0
source

Source: https://habr.com/ru/post/1494058/


All Articles