Módulo client (Android)

Top  Previous  Next

Tela

Ao digitar 1 e pressionar o botão este é o resultado:

Biblioteca necessária

 
ksoap2-j2se-full-2.1.2.jar

Tipo.java

 

package com.junior;

 

public class Tipo {

 

 public int Codigo;

 public String Nome;

 

 public Tipo(int acodigo, String anome) {

         Codigo = acodigo;

         Nome = anome;

 }

 

 public Tipo(String WebServiceStr) {

 

         if (WebServiceStr.indexOf(";") > 0) {

                 try {

                         Codigo = Integer.parseInt(WebServiceStr.split(";")[0]);

                         Nome = WebServiceStr.split(";")[1];

                 } catch (Exception e) {

 

                 }

         }

 }

 

 @Override

 public String toString() {

         return String.valueOf(Codigo) + "-" + Nome;

 }

}

 

PegarListaActivity.java

 

package com.junior;

 

import java.util.ArrayList;

 

import org.ksoap2.SoapEnvelope;

import org.ksoap2.serialization.SoapObject;

import org.ksoap2.serialization.SoapSerializationEnvelope;

import org.ksoap2.transport.HttpTransportSE;

 

import android.app.Activity;

import android.app.ProgressDialog;

import android.os.Bundle;

import android.os.Handler;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;

import android.widget.Toast;

 

public class PegarListaActivity extends Activity implements OnClickListener, Runnable {

 

 // associamos as constantes com informações necessárias para acessar o webservice

 private static final String SOAP_ACTION = "http://www.servico.market.com.br/GetTipos";

 private static final String METHOD_NAME = "GetTipos";

 private static final String NAMESPACE = "http://www.servico.market.com.br/";

 private static final String URL = "http://www.servico.market.com.br/Lista.asmx";

 

 // componentes visuais

 TextView tvResposta;

 Button btConsultar;

 EditText edCodigo;

 

 // handler usado para atualizar a view

 private Handler handler = new Handler();

 private ProgressDialog dialog;

 private Object result;

 

 // lista de objetos que retorna do webservice

 private ArrayList<Tipo> Tipos;

 

 @Override

 public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);

         setContentView(R.layout.main);

 

         // cria a lista de retorno vazia

         Tipos = new ArrayList<Tipo>();

         AssociarComponentes();

 }

 

 private void AssociarComponentes() {

         tvResposta = (TextView) findViewById(R.id.tvResposta);

         edCodigo = (EditText) findViewById(R.id.edCodigo);

         btConsultar = (Button) findViewById(R.id.btConsultar);

         btConsultar.setOnClickListener(this);

 }

 

 public void onClick(View v) {

         dialog = ProgressDialog.show(this, "Exemplo", "Buscando texto, aguarde...", false, true);

         // faz o download numa thread

         new Thread(this).start();

 }

 

 public void run() {

 

         try {

                 // pega o codigo que o usuario digitou

                 int codigo = Integer.parseInt(edCodigo.getText().toString());

 

                 // monta o protocolo de comunicao SOAP associando o webmethod

                 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

                 // passa o codigo por parâmetro

                 request.addProperty("Codigo", codigo);

                 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

                 envelope.dotNet = true;

                 envelope.setOutputSoapObject(request);

 

                 // este HttpTransport fará o envio e leitura de resposta

                 HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

                 try {

                         // chama função

                         androidHttpTransport.call(SOAP_ACTION, envelope);

                         

                         // obtem a resposta

                         result = (Object) envelope.getResponse();

 

                         // esta função pega a resposta e verifica se está ok

                         if (MontarArrayList(result.toString())) {        

                                 // precisa do handler para atualizar a view de outra thread

                                 handler.post(new Runnable() {

                                         public void run() {

                                                 // só para mostrar algo 'visual'

                                                 String retorno = "quant: " + String.valueOf(Tipos.size()) + "\n";

                                                 for (Tipo t : Tipos) {

                                                         retorno += t.toString() + "\n";

                                                 }

                                                 tvResposta.setText(retorno);

                                         }

                                 });

                         } else

                                 Toast.makeText(PegarListaActivity.this, "Erro ao receber resposta", Toast.LENGTH_SHORT).show();

                 } catch (Exception e) {

                         e.printStackTrace();

                 }

         } catch (Throwable e) {

                 Log.e("Erro", e.getMessage(), e);

         } finally {

                 dialog.dismiss();

         }

 }

 

 private boolean MontarArrayList(String webStr) {

         // vamos ver se o retorno é válido!

         if (webStr.length() > 0 && webStr.indexOf("|") > 0) {

                 // vamos separar cada objeto um "|"

                 Tipos.clear();

                 String[] tipos = webStr.split("\\|");

                 for (String s : tipos) {

                         Tipo t = new Tipo(s);

                         Tipos.add(t);

                 }

                 return true;

         }

         else

                 return false;

 }

}

 

main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

 

<TextView

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Digite o código" />

 

<EditText

    android:id="@+id/edCodigo"

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

    android:ems="10"

    android:inputType="number" >

 

    <requestFocus />

</EditText>

 

<Button

    android:id="@+id/btConsultar"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Consultar" />

 

<TextView

    android:id="@+id/tvResposta"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="Resposta" />

 

</LinearLayout>

 

Manifest.xml

 

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

  package="com.junior"

  android:versionCode="1"

  android:versionName="1.0" >

 

  <uses-sdk android:minSdkVersion="10" />

       <uses-permission android:name="android.permission.INTERNET" />

 

  <application

      android:icon="@drawable/ic_launcher"

      android:label="@string/app_name" >

      <activity

          android:name=".PegarListaActivity"

          android:label="@string/app_name" >

          <intent-filter>

              <action android:name="android.intent.action.MAIN" />

 

              <category android:name="android.intent.category.LAUNCHER" />

          </intent-filter>

      </activity>

  </application>

 

</manifest>

 

Observações

Para maior segurança pode-se criptografar a string de envio/recebimento