Menu

KSoap2 + Android + .net Ws = Null

Help
2011-02-09
2013-04-25
  • ulloa diego

    ulloa diego - 2011-02-09

    Hello, i'm having some issues using Ksoap2 in an android project while conecting to a .net Webservice.
    As long as i call the Ws witouth parameters everything works just fine, but when i try to add parameters, the servers never gets them.
    here's my code

    import java.util.Vector;
    import org.ksoap2.SoapEnvelope;
    import org.ksoap2.serialization.PropertyInfo;
    import org.ksoap2.serialization.SoapObject;
    import org.ksoap2.serialization.SoapPrimitive;
    import org.ksoap2.serialization.SoapSerializationEnvelope;
    import org.ksoap2.transport.AndroidHttpTransport;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.TextView;
    import android.widget.Toast;
    public class ServicioWeb extends Activity {
        SoapObject response;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            String NAMESPACE = "http://tempuri.org/";
            String METHOD_NAME = "getClientesByName";
            String SOAP_ACTION = "http://tempuri.org/getClientesByName";
            String URL = "http://www.ws.idbnar2.com.ar/wsClientes.asmx";
            SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
           PropertyInfo pi = new PropertyInfo();
            pi.setName("Nombre");
            pi.setValue("RIQUELME");
            pi.setType(int.class);
            Request.addProperty(pi);
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet = true;
            envelope.setOutputSoapObject(Request);
            AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
            ListView Lista = (ListView)findViewById(R.id.Lista);
            
            try
            {
                androidHttpTransport.call(SOAP_ACTION, envelope);
                response = (SoapObject)envelope.getResponse();
                String[] Clientes = getStringArrayResponse(response, null);
                Lista.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,Clientes));
            }
            catch(Exception e)
            {
                Toast toast = Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG);
                toast.show();
            }
        }
        
        public String[] getStringArrayResponse(SoapObject node, Vector<String> strings) {
            boolean isFirstCall = false;
            if (strings == null) {
                isFirstCall = true;
                strings = new Vector<String>();
            }
            int count = response.getPropertyCount();
            for (int i = 0; i < count; i++) {
                Object obj1 = node.getProperty(i);
                if (obj1 instanceof SoapObject) {
                    // don't recurse empty objects
                    if (((SoapObject)obj1).getPropertyCount() > 0) {
                        // recurse into another node to process its nodes/primitives
                        getStringArrayResponse((SoapObject)obj1, strings);
                    }
                } else if (obj1 instanceof SoapPrimitive) {
                    strings.add(((SoapPrimitive)obj1).toString());
                }
            }
            // only make this for the original caller
            if (isFirstCall) {
                return (String[])strings.toArray(new String[strings.size()]);
            }
            return null;
        }
    }
    

    I harcode the server side, to return a string + the parameters i send it.. and now all i get it's the hardcoded part, seems like the parameters i add to the soap objets are never receives by the server.

    Any idea wha'ts wrong???

     
  • Manfred Moser

    Manfred Moser - 2011-02-25

    Check out how to debug that on the tips and tricks on the android project wiki

    http://code.google.com/p/ksoap2-android/

     

Log in to post a comment.