REST and SOAP webservice in android

后端 未结 2 1597
自闭症患者
自闭症患者 2020-12-04 17:08

I found tutorial to use kSOAP api to use SOAP webservice. Can anyone provide me sample programs (tutorial) on getting REST webservice and SOAP webservice in android. I have

相关标签:
2条回答
  • 2020-12-04 17:34

    hi here is good example to implement SOAP .

    I have used this and perfectly work for me. you can download ksoap2-android-assembly-2.4-jar-with-dependencies.jar lib from here.

    here is my code snippet....

        String NAMESPACE = "http://www.namespace.com/";
        String METHOD_NAME = "login";
        String SOAP_ACTION = "http://www.namespace.com/loginRequest";
        String URL = "http://www.domainname.com:8080/AccessWEbService?wsdl";
    
        SoapObject loginRequest = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapObject inLoginDto = new SoapObject(NAMESPACE, "LoginDetail");
    
        inLoginDto.addAttribute("username", "");
        inLoginDto.addProperty("username", etUserName.getText().toString());
        inLoginDto.addProperty("password", etPassword.getText().toString());
    
        loginRequest.addProperty("loginDetails", inLoginDto);
    
        Log.e("Soap Request : ", "" + loginRequest);
    
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.setOutputSoapObject(loginRequest);
    
        AndroidHttpTransport androidHttpTransport = new AndroidHttpTransport(URL);
        try {
            androidHttpTransport.call(SOAP_ACTION, envelope);
            SoapObject response = (SoapObject) envelope.getResponse();
    
            Boolean loginStatus = Boolean.getBoolean(response.getProperty("success").toString());
        } 
        catch (Exception e) {
            Log.e("Exception ", "" + e);
        }
    

    try it if can help you...

    0 讨论(0)
  • 2020-12-04 17:50

    SOAP

    Pros:

    • Langauge, platform, and transport agnostic
    • Designed to handle distributed computing environments
    • Is the prevailing standard for web services, and hence has better support from other standards (WSDL, WS-*) and tooling from vendors
    • Built-in error handling (faults)
    • Extensibility

    Cons:

    • Conceptually more difficult, more "heavy-weight" than REST
    • More verbose
    • Harder to develop, requires tools

    REST

    Pros:

    • Language and platform agnostic
    • Much simpler to develop than SOAP
    • Small learning curve, less reliance on tools
    • Concise, no need for additional messaging layer
    • Closer in design and philosophy to the Web

    Cons:

    • Assumes a point-to-point communication model--not usable for distributed computing environment where message may go through one or more intermediaries
    • Lack of standards support for security, policy, reliable messaging, etc., so services that have more sophisticated requirements are harder to develop ("roll your own")
    • Tied to the HTTP transport model

    Example of REST

    Use apache http jar

    public void callRestWebService(){  
              System.out.println(".....REST..........");
                 HttpClient httpclient = new DefaultHttpClient();  
                 HttpGet request = new HttpGet(wsdlURL);  
                 request.addHeader("company name", "abc");  
    
                 request.addHeader("getAccessNumbers","http://service.xyz.com/");
                 ResponseHandler<String> handler = new BasicResponseHandler();  
                 try {  
                     result = httpclient.execute(request, handler); 
                     System.out.println("..result..."+result);
                 } catch (ClientProtocolException e) {  
                     e.printStackTrace();  
                 } catch (IOException e) {  
                     e.printStackTrace();  
                 }  
                 httpclient.getConnectionManager().shutdown();  
    
             } // end callWebService()  
         } 
    

    Example of SOAP

    You can use either ksoap or create soap xml by yourself and send to url

    private boolean callSOAPWebService() {
            OutputStream out = null;
            int respCode = -1;
            boolean isSuccess = false;
            URL url = null;
            HttpsURLConnection httpURLConnection = null;
    
            try {
    
                url = new URL(wsdlURL);
    
    
                httpURLConnection = (HttpsURLConnection) url.openConnection();
    
                do {
                    // httpURLConnection.setHostnameVerifier(DO_NOT_VERIFY);
                    httpURLConnection.setRequestMethod("POST");
                    httpURLConnection
                            .setRequestProperty("Connection", "keep-alive");
                    httpURLConnection
                            .setRequestProperty("Content-Type", "text/xml");
                    httpURLConnection.setRequestProperty("SendChunked", "True");
                    httpURLConnection.setRequestProperty("UseCookieContainer",
                            "True");
                    HttpURLConnection.setFollowRedirects(false);
                    httpURLConnection.setDoOutput(true);
                    httpURLConnection.setDoInput(true);
                    httpURLConnection.setUseCaches(true);
                    httpURLConnection.setRequestProperty("Content-length",
                            getReqData().length + "");
                    httpURLConnection.setReadTimeout(10 * 1000);
                    // httpURLConnection.setConnectTimeout(10 * 1000);
                    httpURLConnection.connect();
    
                    out = httpURLConnection.getOutputStream();
    
                    if (out != null) {
                        out.write(getReqData());
                        out.flush();
                    }
    
                    if (httpURLConnection != null) {
                        respCode = httpURLConnection.getResponseCode();
                        Log.e("respCode", ":" + respCode);
    
                    }
                } while (respCode == -1);
    
                // If it works fine
                if (respCode == 200) {
                    try {
                        InputStream responce = httpURLConnection.getInputStream();
                        String str = convertStreamToString(responce);
                        System.out.println(".....data....." + new String(str));
    
                        // String str
                        // =Environment.getExternalStorageDirectory().getAbsolutePath()+"/sunilwebservice.txt";
                        // File f = new File(str);
                        //
                        // try{
                        // f.createNewFile();
                        // FileOutputStream fo = new FileOutputStream(f);
                        // fo.write(b);
                        // fo.close();
                        // }catch(Exception ex){
                        // ex.printStackTrace();
                        // }
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                } else {
                    isSuccess = false;
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (out != null) {
                    out = null;
                }
                if (httpURLConnection != null) {
                    httpURLConnection.disconnect();
                    httpURLConnection = null;
                }
            }
            return isSuccess;
        }
    
        public static String createSoapHeader() {
            String soapHeader = null;
    
            soapHeader = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                    + "<soap:Envelope "
                    + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\""
                    + " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
                    + " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" + ">";
            return soapHeader;
        }
    
        public static byte[] getReqData() {
            StringBuilder requestData = new StringBuilder();
    
            requestData.append(createSoapHeader());
            requestData
                    .append("<soap:Body>"
                            + "<getAccessNumbers"
                            + " xmlns=\"http://service.xyz.com.com/\""
    
                            + "</getAccessNumbers> </soap:Body> </soap:Envelope>");
    
            return requestData.toString().trim().getBytes();
        }
    
        private static String convertStreamToString(InputStream is)
                throws UnsupportedEncodingException {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is,
                    "UTF-8"));
            StringBuilder sb = new StringBuilder();
            String line = null;
            try {
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return sb.toString();
    
        }
    
    0 讨论(0)
提交回复
热议问题