Android WSDL/SOAP service client

后端 未结 7 2154
北恋
北恋 2020-11-30 22:53

I have some web services that uses WSDL/SOAP for communication. Specifically, I am using PHP and Nusoap to make them. How can I use these web services on Android? I am going

相关标签:
7条回答
  • 2020-11-30 23:06

    Icesoap, which I found yesterday, looks promising. It worked on a basic test, but it lacks more examples.

    0 讨论(0)
  • 2020-11-30 23:09
       public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set View to register.xml
        setContentView(R.layout.register);
        session = new UserSessionManeger(getApplicationContext());     
    
        login_id= (EditText) findViewById(R.id.loginid);
        Suponser_id= (EditText) findViewById(R.id.sponserid);
        name=(EditText) findViewById(R.id.name);
        pass=(EditText) findViewById(R.id.pass);
        moblie=(EditText) findViewById(R.id.mobile);
        email= (EditText) findViewById(R.id.email);
        placment= (EditText) findViewById(R.id.placement);
        Adress= (EditText) findViewById(R.id.adress);
        State = (EditText) findViewById(R.id.state);
    
        city=(EditText) findViewById(R.id.city);
        pincopde=(EditText) findViewById(R.id.pincode);
        counntry= (EditText) findViewById(R.id.country);
    
        plantype= (EditText) findViewById(R.id.plantype);
    
    
        mRegister = (Button)findViewById(R.id.registration); 
      //  session.createUserLoginSession(info.getCustomerID(),info.getName(),info.getMobile(),info.getEmailID(),info.getAccountType());
        mRegister.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
    
    
                 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME1);        
    
                    request.addProperty("LoginCustomerID",login_id.getText().toString());
                    request.addProperty("SponsorID",Suponser_id.getText().toString());
                    request.addProperty("Name", name.getText().toString());
                    request.addProperty("LoginPassword",pass.getText().toString() );
                    request.addProperty("MobileNumber",smoblie=moblie.getText().toString());
                    request.addProperty("Email",email.getText().toString() );
                    request.addProperty("Placement", placment.getText().toString()); 
                    request.addProperty("address1",  Adress.getText().toString());
                    request.addProperty("StateID", State.getText().toString());
                    request.addProperty("CityName",city.getText().toString());
    
                    request.addProperty("Pincode",pincopde.getText().toString());
    
    
                    request.addProperty("CountryID",counntry.getText().toString());
                    request.addProperty("PlanType",plantype.getText().toString());
    
    
    
                    //Declare the version of the SOAP request
                    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    
                    envelope.setOutputSoapObject(request);
                    envelope.dotNet = true;
                    try {
    
                        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    
                        //this is the actual part that will call the webservice
                         androidHttpTransport.call(SOAP_ACTION1, envelope);
    
    
                        SoapObject result = (SoapObject)envelope.getResponse();  
                        Log.e("value of result", " result"+result);
                        if(result!= null)
                        {
    
    
                            Toast.makeText(getApplicationContext(), "successfully register ", 2000).show()  ;
    
                        }
                        else {
    
                            Toast.makeText(getApplicationContext(), "Try Again..", 2000).show() ;   
                        }
    
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
    
    
    
            }
        });
        }
    
      }
    
    0 讨论(0)
  • 2020-11-30 23:14

    I’ve created a new SOAP client for the Android platform, it is use a JAX-WS generated interfaces, but it is only a proof-of-concept yet.

    If you are interested, please try the example and/or watch the source: http://wiki.javaforum.hu/display/ANDROIDSOAP/Home

    Update: the version 0.0.4 is out with tutorial:

    http://wiki.javaforum.hu/display/ANDROIDSOAP/2012/04/16/Version+0.0.4+released

    http://wiki.javaforum.hu/display/ANDROIDSOAP/Step+by+step+tutorial

    0 讨论(0)
  • 2020-11-30 23:18

    I have just completed a android App about wsdl,i have some tips to append:

    1.the most important resource is www.wsdl2code.com

    2.you can take you username and password with header, which encoded with Base64,such as :

            String USERNAME = "yourUsername";
        String PASSWORD = "yourPassWord";
        StringBuffer auth = new StringBuffer(USERNAME);
        auth.append(':').append(PASSWORD);
        byte[] raw = auth.toString().getBytes();
        auth.setLength(0);
        auth.append("Basic ");
        org.kobjects.base64.Base64.encode(raw, 0, raw.length, auth);
        List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
        headers.add(new HeaderProperty("Authorization", auth.toString())); // "Basic V1M6"));
    
        Vectordianzhan response = bydWs.getDianzhans(headers);
    

    3.somethimes,you are not sure either ANDROID code or webserver is wrong, then debug is important.in the sample , catching "XmlPullParserException" ,log "requestDump" and "responseDump"in the exception.additionally, you should catch the IP package with adb.

        try {
        Logg.i(TAG, "2  ");
        Object response = androidHttpTransport.call(SOAP_ACTION, envelope, headers); 
        Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
        Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
        Logg.i(TAG, "3");
    } catch (IOException e) {
        Logg.i(TAG, "IOException");
    } 
    catch (XmlPullParserException e) {
         Logg.i(TAG, "requestDump: " + androidHttpTransport.requestDump);
         Logg.i(TAG, "responseDump: "+ androidHttpTransport.responseDump);
         Logg.i(TAG, "XmlPullParserException");
         e.printStackTrace();
    }
    
    0 讨论(0)
  • 2020-11-30 23:23

    Android doesn't come with SOAP library. However, you can download 3rd party library here:
    https://github.com/simpligility/ksoap2-android

    If you need help using it, you might find this thread helpful:
    How to call a .NET Webservice from Android using KSOAP2?

    0 讨论(0)
  • 2020-11-30 23:24
    private static  final  String NAMESPACE = "http://tempuri.org/";
    private static  final String URL = "http://example.com/CRM/Service.svc";
    private static  final  String SOAP_ACTION = "http://tempuri.org/Login";
    private static  final String METHOD_NAME = "Login";
    
    
    //calling web services method
    
    String loginresult=callService(username,password,usertype);
    
    
    //calling webservices
    String callService(String a1,String b1,Integer c1) throws Exception {
    
                Boolean flag=true;
                do
                {
                    try{
                        System.out.println(flag);
    
                    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
    
                    PropertyInfo pa1 = new PropertyInfo();
                    pa1.setName("Username");
                    pa1.setValue(a1.toString());
    
                    PropertyInfo pb1 = new PropertyInfo();
                    pb1.setName("Password");
                    pb1.setValue(b1.toString());
    
                    PropertyInfo pc1 = new PropertyInfo();
                    pc1.setName("UserType");
                    pc1.setValue(c1);
                    System.out.println(c1+"this is integer****s");
    
    
    
    
                    System.out.println("new");
                    request.addProperty(pa1);
                    request.addProperty(pb1);
                    request.addProperty(pc1);
    
    
    
                    System.out.println("new2");
                    SoapSerializationEnvelope envelope = new    SoapSerializationEnvelope(SoapEnvelope.VER11);
                    envelope.dotNet = true;
                    System.out.println("new3");
                    envelope.setOutputSoapObject(request);
                    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
                    androidHttpTransport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
                    System.out.println("new4");
                    try{
                    androidHttpTransport.call(SOAP_ACTION, envelope);
                    }
                    catch(Exception e)
                    {
    
                        System.out.println(e+"   this is exception");
                    }
                    System.out.println("new5");
                    SoapObject response = (SoapObject)envelope.bodyIn;
    
                    result = response.getProperty(0).toString(); 
    
                    flag=false;
                    System.out.println(flag);
                    }catch (Exception e) {
                    // TODO: handle exception
                        flag=false;
                }
                }
                while(flag);
                return result;
    
            }  
    ///
    
    0 讨论(0)
提交回复
热议问题