Dúvida em AsyncTask com Webservice

Senhores, boa tarde.

Estou montando uma aplicação Android para comunicar com um Webservice-rest, até então tudo tranquilo, utilizei um exemplo que encontrei na internet e comecei a codificar aqui.
Contudo surgiu um problema, quando realizo o teste da aplicação em uma versão do Android superior a 2.3 o sistema não consegue obter o retorno. Após pesquisar e perguntar em outro fórum descobri que a Google retirou a possibilidade de se chamar métodos que comunicam com a internet no método principal e que um solução para isso seria a utilização do AsyncTask.

Após realizar uma busca pela internet achei um tutorial onde o camarada explica justamente como fazer a comunicação de um Webservice-rest com o Android usando o AsyncTask. Beleza, comecei a ler, tentei fazer aqui, mas não consegui entender o conceito do AsyncTask.

Porque hoje eu tenho o seguinte ambiente aqui:

GrupoProdutoRest.java

[code]package br.com.unip.menudroid.webservice;

import java.util.ArrayList;
import java.util.List;
import br.com.unip.menudroid.model.GrupoProduto;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonParser;

public class GrupoProdutoRest {

private static final String URL_WS = "http://192.168.0.11:8080/menuDroidWeb/ws/grupoproduto/";

public List<GrupoProduto> getListaGrupoProduto() throws Exception {

	String[] resposta = new GrupoProdutoWS().get(URL_WS + "listar");
	
	if (resposta[0].equals("200")) {
		Gson gson = new Gson();
		ArrayList<GrupoProduto> listaGrupoProduto = new ArrayList<GrupoProduto>();
		JsonParser parser = new JsonParser();
		JsonArray array = parser.parse(resposta[1]).getAsJsonArray();
	    
	    for (int i = 0; i < array.size(); i++) {
	    	listaGrupoProduto.add(gson.fromJson(array.get(i), GrupoProduto.class));
		}
		return listaGrupoProduto;
	} else {
		throw new Exception(resposta[1]);
	}
}

}
[/code]

GrupoProdutoWS.java

[code]package br.com.unip.menudroid.webservice;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;

import android.util.Log;

public class GrupoProdutoWS {

public final String[] get(String url) {

	String[] result = new String[2];
	HttpGet httpget = new HttpGet(url);
	HttpResponse response;

	try {
		response = HttpClientSingleton.getHttpClientInstace().execute(
				httpget);
		HttpEntity entity = response.getEntity();

		if (entity != null) {
			result[0] = String.valueOf(response.getStatusLine()
					.getStatusCode());
			InputStream instream = entity.getContent();
			result[1] = toString(instream);
			instream.close();
			Log.i("post", "Result from post JsonPost : " + result[0]
			                              						+ " : " + result[1]);
		}
	} catch (Exception e) {
		Log.e("NGVL", "Falha ao acessar Web service", e);
		result[0] = "0";
		result[1] = "Falha de rede!";
	}
	return result;
}

public final String[] post(String url, String json) {
	String[] result = new String[2];
	try {

		HttpPost httpPost = new HttpPost(new URI(url));
		httpPost.setHeader("Content-type", "application/json");
		StringEntity sEntity = new StringEntity(json, "UTF-8");
		httpPost.setEntity(sEntity);

		HttpResponse response;
		response = HttpClientSingleton.getHttpClientInstace().execute(
				httpPost);
		HttpEntity entity = response.getEntity();

		if (entity != null) {
			result[0] = String.valueOf(response.getStatusLine()
					.getStatusCode());
			InputStream instream = entity.getContent();
			result[1] = toString(instream);
			instream.close();
			Log.d("post", "Result from post JsonPost : " + result[0]
					+ " : " + result[1]);
		}

	} catch (Exception e) {
		Log.e("NGVL", "Falha ao acessar Web service", e);
		result[0] = "0";
		result[1] = "Falha de rede!";
	}
	return result;
}

private String toString(InputStream is) throws IOException {

	byte[] bytes = new byte[1024];
	ByteArrayOutputStream baos = new ByteArrayOutputStream();
	int lidos;
	while ((lidos = is.read(bytes)) > 0) {
		baos.write(bytes, 0, lidos);
	}
	return new String(baos.toByteArray());
}

}
[/code]

Eu até tentei fuçar no AsyncTask, mas em cada exemplo que eu acho a pessoa faz de um jeito. Ou eles criam uma nova classe ou fazem direto no main e isso esta me deixando muito confuso, não sei como devo trabalhar.
Sem dizer que eu também não entendi como faço para chamar o método que me retorna o ArrayList (getListaGrupoProduto) e passar isso para a Intent.
Alguém poderia me dar uma ajuda???

Agradeço desde já pela a atenção!
:smiley:

Galera,

Resolvi meu problema, fiz da seguinte forma

private void retornarTodos() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { GrupoProdutoRest gProdRest = new GrupoProdutoRest(); ArrayList<GrupoProduto> listaGrupoProduto = (ArrayList<GrupoProduto>) gProdRest.getListaGrupoProduto(); Intent i = new Intent(getApplicationContext(), ListaGrupoProduto.class); i.putExtra("lista", listaGrupoProduto); startActivity(i); } catch (Exception e) { e.printStackTrace(); gerarToast(e.getMessage()); } return null; } }.execute(); }

E depois no botão eu chamei esse método.
8)

[quote=Zenity]Galera,

Resolvi meu problema, fiz da seguinte forma

private void retornarTodos() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { GrupoProdutoRest gProdRest = new GrupoProdutoRest(); ArrayList<GrupoProduto> listaGrupoProduto = (ArrayList<GrupoProduto>) gProdRest.getListaGrupoProduto(); Intent i = new Intent(getApplicationContext(), ListaGrupoProduto.class); i.putExtra("lista", listaGrupoProduto); startActivity(i); } catch (Exception e) { e.printStackTrace(); gerarToast(e.getMessage()); } return null; } }.execute(); }

E depois no botão eu chamei esse método.
8) [/quote]Olá Zenity, sabe me dizer como implemento este método que vc fez no meu projeto? Sou muito inexperiente com java, e preciso de ajuda

Fiz assim

[code]private void pesquisarClientes() {
dialog = ProgressDialog.show(this, “Aguarde…”,
“Pesquisando registros.”, false, true);
dialog.setIcon(R.drawable.ic_launcher);
dialog.setCancelable(false);

	DSRESTConnection conn = getConnection();
	final TServerMethods1 serv = new TServerMethods1(conn);

	new AsyncTask<Void, Void, Void>() {

		@Override
		protected Void doInBackground(Void... params) {
			try {

				String idCharCodItem = edtCliente.getText().toString();
				String[] idNumItem = idCharCodItem.split("-");

				GetDados_ClientesReturns ret;
				ret = serv.GetDados_Clientes(idNumItem[0]);

				if (ret.Nome.equals(" - ")) {
					Alerta.mostrarAtencao(VendaClienteActivity.this,
							getString(R.string.msg_clientenaolocalizado),
							0, false);
					carregando(false);
					// permanece no mesmo focus
					edtCliente.setText("");
					edtCliente.setFocusableInTouchMode(true);
					edtCliente.requestFocus();

				} else {
					// parametro = 0 significa 'Não', 1 significa 'Sim'
					if (parametroBLOQUEIA_CLIENTE_S_REG_ENTR() == 1) {
						// ai verifica se o cliente tem registro do entrada
						if (verificaIDCliente() != Integer
								.parseInt(idNumItem[0])) {
							Alerta.mostrarAtencao(
									VendaClienteActivity.this,
									getString(R.string.msg_clientesemregentrada),
									0, false);
							carregando(false);

							// permanece no mesmo focus
							edtCliente.setText("");
							edtCliente.setFocusableInTouchMode(true);
							edtCliente.requestFocus();
						} else {
							mudaFocusCliente();
							// recebe o nome e o id do cliente
							edtCliente.setText(ret.Nome);
						}
					} else {
						mudaFocusCliente();
						// recebe o nome e o id do cliente
						edtCliente.setText(ret.Nome);
					}
				}

				finalizaDialogo(false, "");
				// desabilita o dialog
				dialog.dismiss();

			} catch (Exception e) {
				e.printStackTrace();
				dialog.dismiss();
				finalizaDialogo(true, e.getMessage());				
			}
			return null;
		}
	}.execute();[/code]

Mais está retornando este erro
"Only the original thread that created a view hierarchy can touch its views.?

Obrigado.

Tentei assim

[code]public class verificarRealPorcentagem extends AsyncTask<Void, Void, Void> {

	private ProgressDialog progress;
	private Context context;

	public verificarRealPorcentagem(Context context) {
		this.context = context;
	}

	@Override
	protected void onPreExecute() {
		// Cria novo um ProgressDialogo e exibe
		progress = new ProgressDialog(context);
		progress.setMessage("Aguarde...");
		progress.show();
	}

	@Override
	protected Void doInBackground(Void... params) {
		try {

			if (parametroDESC_PORCENTAGEM() == 0) {
				txtValoresX.setText("");
				txtValoresY.setText("");
			} else if (parametroDESC_PORCENTAGEM() == 1) {
				txtValoresX
						.setText(MensagensCentralizadas.msg_emporcentagem);
				txtValoresY
						.setText(MensagensCentralizadas.msg_emporcentagem);
			} else if (parametroDESC_PORCENTAGEM() == 2) {
				txtValoresX.setText(MensagensCentralizadas.msg_emreal);
				txtValoresY.setText(MensagensCentralizadas.msg_emreal);
			}

		} catch (Exception e) {
			e.printStackTrace();

			Toast.makeText(VendaClienteActivity.this, e.getMessage(),
					Toast.LENGTH_LONG).show();
		}
		return null;			
	}

	@Override
	protected void onPostExecute(Void result) {
		// Cancela progressDialogo
		progress.dismiss();
	}	

}[/code]

E chamando assim

verificarRealPorcentagem vRP = new verificarRealPorcentagem(this); vRP.execute();

Mais está dando erro

[quote]01-11 18:31:59.760: W/System.err(12871): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.checkThread(ViewRoot.java:3020)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.invalidateChild(ViewRoot.java:647)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:673)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
01-11 18:31:59.760: W/System.err(12871): at android.view.View.invalidate(View.java:5279)
01-11 18:31:59.760: W/System.err(12871): at android.widget.TextView.checkForRelayout(TextView.java:5618)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2779)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2640)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2615)
01-11 18:31:59.770: W/System.err(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:856)
01-11 18:31:59.770: W/System.err(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:1)
01-11 18:31:59.770: W/System.err(12871): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-11 18:31:59.770: W/System.err(12871): at java.lang.Thread.run(Thread.java:1019)
01-11 18:31:59.770: W/dalvikvm(12871): threadid=9: thread exiting with uncaught exception (group=0x40018578)
01-11 18:31:59.770: E/AndroidRuntime(12871): FATAL EXCEPTION: AsyncTask #1
01-11 18:31:59.770: E/AndroidRuntime(12871): java.lang.RuntimeException: An error occured while executing doInBackground()
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.AsyncTask$3.done(AsyncTask.java:200)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.lang.Thread.run(Thread.java:1019)
01-11 18:31:59.770: E/AndroidRuntime(12871): Caused by: java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.Handler.(Handler.java:121)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.widget.Toast.(Toast.java:68)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.widget.Toast.makeText(Toast.java:231)
01-11 18:31:59.770: E/AndroidRuntime(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:866)
01-11 18:31:59.770: E/AndroidRuntime(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:1)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-11 18:31:59.770: E/AndroidRuntime(12871): … 4 more[/quote]

Resolvido usando desta forma

[code]@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

	// this.requestWindowFeature(Window.FEATURE_NO_TITLE);
	this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
	this.getWindow().clearFlags(
			WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
	setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

	setContentView(R.layout.tela_vendacli);

	// versão 4.0 android
	StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
			.permitAll().build();
	StrictMode.setThreadPolicy(policy);[/code]

Obrigado

Opa cara tudo bem!
Desculpa não responder antes, não tinha visto suas mensagens!!

Então, esse jeito ai que você achou eu também tinha achado quando estava implementando, mas o pessoal não recomendou desse jeito porque de certa forma você está “burlando” as restrições do Android.

A forma mais correta mesmo é usando a AsyncTask ou uma Thread que execute a operação do WS.

Boa noite,

Quanto a questão do erro apresentado é porque você não pode alterar componentes da thread da interface na AsyncTask, que esteja fora da sua Activity.
Em resumo, crie a sua asynctask como uma classe interna da sua Activity e chame ela no onCreate(); lembrando que em caso de requisições muito extensas, use Service.

[quote=adriano_servitec]Tentei assim

[code]public class verificarRealPorcentagem extends AsyncTask<Void, Void, Void> {

	private ProgressDialog progress;
	private Context context;

	public verificarRealPorcentagem(Context context) {
		this.context = context;
	}

	@Override
	protected void onPreExecute() {
		// Cria novo um ProgressDialogo e exibe
		progress = new ProgressDialog(context);
		progress.setMessage("Aguarde...");
		progress.show();
	}

	@Override
	protected Void doInBackground(Void... params) {
		try {

			if (parametroDESC_PORCENTAGEM() == 0) {
				txtValoresX.setText("");
				txtValoresY.setText("");
			} else if (parametroDESC_PORCENTAGEM() == 1) {
				txtValoresX
						.setText(MensagensCentralizadas.msg_emporcentagem);
				txtValoresY
						.setText(MensagensCentralizadas.msg_emporcentagem);
			} else if (parametroDESC_PORCENTAGEM() == 2) {
				txtValoresX.setText(MensagensCentralizadas.msg_emreal);
				txtValoresY.setText(MensagensCentralizadas.msg_emreal);
			}

		} catch (Exception e) {
			e.printStackTrace();

                         /*
                          //O seu erro está aqui neste bloco
			Toast.makeText(VendaClienteActivity.this, e.getMessage(),
					Toast.LENGTH_LONG).show();
                       //Fim do bloco
                     * /
		}
		return null;			
	}

	@Override
	protected void onPostExecute(Void result) {
		// Cancela progressDialogo
		progress.dismiss();
	}	

}[/code]

E chamando assim

verificarRealPorcentagem vRP = new verificarRealPorcentagem(this); vRP.execute();

Mais está dando erro

[quote]01-11 18:31:59.760: W/System.err(12871): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.checkThread(ViewRoot.java:3020)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.invalidateChild(ViewRoot.java:647)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:673)
01-11 18:31:59.760: W/System.err(12871): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2511)
01-11 18:31:59.760: W/System.err(12871): at android.view.View.invalidate(View.java:5279)
01-11 18:31:59.760: W/System.err(12871): at android.widget.TextView.checkForRelayout(TextView.java:5618)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2779)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2640)
01-11 18:31:59.770: W/System.err(12871): at android.widget.TextView.setText(TextView.java:2615)
01-11 18:31:59.770: W/System.err(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:856)
01-11 18:31:59.770: W/System.err(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:1)
01-11 18:31:59.770: W/System.err(12871): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-11 18:31:59.770: W/System.err(12871): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-11 18:31:59.770: W/System.err(12871): at java.lang.Thread.run(Thread.java:1019)
01-11 18:31:59.770: W/dalvikvm(12871): threadid=9: thread exiting with uncaught exception (group=0x40018578)
01-11 18:31:59.770: E/AndroidRuntime(12871): FATAL EXCEPTION: AsyncTask #1
01-11 18:31:59.770: E/AndroidRuntime(12871): java.lang.RuntimeException: An error occured while executing doInBackground()
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.AsyncTask$3.done(AsyncTask.java:200)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask.run(FutureTask.java:138)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.lang.Thread.run(Thread.java:1019)
01-11 18:31:59.770: E/AndroidRuntime(12871): Caused by: java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.Handler.(Handler.java:121)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.widget.Toast.(Toast.java:68)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.widget.Toast.makeText(Toast.java:231)
01-11 18:31:59.770: E/AndroidRuntime(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:866)
01-11 18:31:59.770: E/AndroidRuntime(12871): at br.com.azsolucoes.azcomanda.activities.VendaClienteActivity$1.doInBackground(VendaClienteActivity.java:1)
01-11 18:31:59.770: E/AndroidRuntime(12871): at android.os.AsyncTask$2.call(AsyncTask.java:185)
01-11 18:31:59.770: E/AndroidRuntime(12871): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
01-11 18:31:59.770: E/AndroidRuntime(12871): … 4 more[/quote][/quote]

Boa noite,

Tire o Toast do

Novamente o Android não permite que se manipule elementos da Thread UI(Principal) por meio de outras Threads

Att

[quote=lucas93lange]

Novamente o Android não permite que se manipule elementos da Thread UI(Principal) por meio de outras Threads

Att[/quote]

Exato. Mas você pode dizer para o programa executar o código na thread do android usando o método runOnUiThread

Um exemplo:

http://stackoverflow.com/questions/11791157/can-i-have-an-example-of-displaying-a-toast-using-runonuithread

[quote=g4j][quote=lucas93lange]

Novamente o Android não permite que se manipule elementos da Thread UI(Principal) por meio de outras Threads

Att[/quote]

Exato. Mas você pode dizer para o programa executar o código na thread do android usando o método runOnUiThread

Um exemplo:

http://stackoverflow.com/questions/11791157/can-i-have-an-example-of-displaying-a-toast-using-runonuithread

[/quote]

Boa noite,

Muito obrigado g4j pelo complemento, inclusive eu li a respeito do metodo citado.
Mas há de concordar comigo que neste caso os componentes da interface estão esperando uma resposta de outra Thread onde há operações de rede, o mais indicado seria ele executar a comunicação no doInBackground() e com resultado obtido realizar o preenchimento dos componentes no onPostExecute.

Boa noite cara tudo bem?

Você conseguiu enviar os dados do seu android para o Webservice?

Estou tentando implementar aqui e não to conseguindo, tem algum exemplo?

Boa noite cara,
Tudo.

Qual é o seu WebService?

.Net
Java
PHP

Ele é SOAP ou RestFull?

No SOAP uma forma de mandar é converter os seus parametros para tipos primitivos ou até String e enviar.