REST y SOAP webservice en android

He encontrado tutorial para utilizar kSOAP api para utilizar SOAP webservice. ¿Puede alguien proporcionarme ejemplos de programas (tutorial) sobre cómo obtener REST webservice y SOAP webservice en android. He googled mucho, pero no encontrar este tipo de tutorial.

JABÓN

Pros:

  • Langauge, plataforma y agnóstico de transporte
  • Diseñado para manejar entornos informáticos distribuidos
  • Es el estándar predominante para servicios web, y por lo tanto tiene un mejor soporte de otros estándares (WSDL, WS- *) y herramientas de proveedores
  • Manejo de errores incorporado (fallos)
  • Extensibilidad

Contras:

  • Conceptualmente más difícil, más "pesado" que REST
  • Más detallado
  • Más difícil de desarrollar, requiere herramientas

DESCANSO

Pros:

  • Agnóstico de lenguaje y plataforma
  • Mucho más fácil de desarrollar que SOAP
  • Pequeña curva de aprendizaje, menos dependencia de las herramientas
  • Conciso, sin necesidad de capa de mensajería adicional
  • Más cerca en el diseño y la filosofía de la Web

Contras:

  • Asume un modelo de comunicación punto a punto – no utilizable para el entorno informático distribuido en el que el mensaje puede pasar por uno o más intermediarios
  • Falta de soporte de estándares para la seguridad, políticas, mensajería confiable, etc., por lo que los servicios que tienen requisitos más sofisticados son más difíciles de desarrollar ("roll your own")
  • Relacionado con el modelo de transporte HTTP

Ejemplo de REST

Usar 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() } 

Ejemplo de SOAP

Puede usar ksoap o crear jabón xml por sí mismo y enviar a 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(); } 

Hola aquí es un buen ejemplo para implementar SOAP .

He usado esto y perfectamente trabajo para mí. Puede descargar ksoap2-android-assembly-2.4-jar-con-dependencies.jar lib desde aquí.

Aquí está mi fragmento de código

  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); } 

Pruébalo si te puede ayudar …

  • Cómo detectar un gesto de desplazamiento en la vista web
  • Android - ¿Cómo pasar la cookie para cargar url con webview?
  • Obtenga las cookies de la vista web con ruta y fecha de caducidad
  • Android y su lenta webview. Hardware acelerado es buggy
  • ¿Cuál es la mejor manera de raspar este código HTML para una aplicación para Android?
  • Tiempo de espera para solicitud de servidor hecha usando "Volley" solo en Android no iOS
  • Los datos Xml se convierten en datos Json en android
  • Cambios en una página web a través de JavaScript que no aparecen en WebView. ¿Hay una manera de forzar el WebView para volver a dibujar su contenido?
  • Cómo editar HTML / CSS / Javascript en Eclipse ADT
  • Rendimiento JPG vs WebP en Android
  • WebViewClient shouldInterceptRequest Congela el WebView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.