Enviar Objeto como parametro para WS KSOAP2 [Android]

5 respostas
R

Boa Tarde, Pessoal

Estou tentando enviar um objeto como parametro para meu WS, mas estou recebendo a seguinte exception...

org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44e75e98)

minha classe q acessa o WS

package br.com.sky.persistencia;

import java.util.ArrayList;
import java.util.List;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import br.com.sky.modelo.Materias;
import br.com.sky.modelo.ParametrosMateria;



public class ListarMateriasWS {
	private static final String SOAP_ACTION ="http://tempuri.org/IService1/ListarMaterias";
	private static final String METHOD_NAME ="ListarMaterias";
	private static final String NAMESPACE="http://tempuri.org/";
	private static final String URL="http://192.168.1.172/Service1.svc";

	List<Materias>listaMaterias =new ArrayList<Materias>();
	SoapObject result;

	
	public List<Materias> listarMaterias(ParametrosMateria parametros){		
		SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);		
		request.addProperty("ParametrosMateria", parametros);
		request.addProperty("token", "");
		SoapSerializationEnvelope envelope =new SoapSerializationEnvelope(SoapEnvelope.VER11);
		envelope.dotNet=true;
		envelope.setOutputSoapObject(request);	
		envelope.addMapping(NAMESPACE, ParametrosMateria.class.getSimpleName(), ParametrosMateria.class);
		try{
			HttpTransportSE androidHttpTranport = new HttpTransportSE(URL);
			androidHttpTranport.call(SOAP_ACTION, envelope);
			result 	= (SoapObject)envelope.getResponse();
			
			if(result != null){
				for (int i = 0; i < result.getPropertyCount(); i++) {
					listaMaterias.add(new Materias((SoapObject)result.getProperty(i)));
				}
			}
			
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return listaMaterias;
	}
}

Alguém pode dar uma ajuda??

Obrigado

5 Respostas

C

Já tive problemas com a KSOAP e tipos complexos, como eu era o desenvolvedor do webservice também preferi trabalhar com JSON para encapsular esses objetos, mas sei q existe maneiras, apesar de um pouco mais trabalhosas

C_k

Boa tarde.

Isso com ctz vai te ajudar.

http://seesharpgears.blogspot.com.br/2010/10/ksoap-android-web-service-tutorial-with.html

R

Cara,

Desculpa a demora…estou fazendo varias coisas ao mesmo tempo… ta complicado.

Olho esse ex. sempre q necessario, a dúvida é o senguinte, consigo enviar um objeto de um tipo e o Web Service me devolver outro?

Ex. Mandar Obj Pessoa e receber um Obj Carro…???

Obrigado

R

Executando o código acima...

Estou recebendo a seguinte exceção...

.XmlPullParserException

try{
			HttpTransportSE androidHttpTranport = new HttpTransportSE(URL);
                        //É aqui q esta dando exception
			androidHttpTranport.call(SOAP_ACTION, envelope);
			result 	= (SoapObject)envelope.getResponse();
			
			if(result != null){
				for (int i = 0; i < result.getPropertyCount(); i++) {
					listaMaterias.add(new Materias((SoapObject)result.getProperty(i)));
				}
			}
			
		}catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

Alguém sabe o Motivo?

Abraços

E

Olá amigo estou com o mesmo problema que o senhor enfrento.

Teria como dar uma ajuda?

Criado 18 de junho de 2012
Ultima resposta 5 de out. de 2012
Respostas 5
Participantes 4