Sessões SOAP dotNet em Ksoap-android.

Pela falta de informação sobre esse assunto resolvi publicar esse POST para não cair em esquecimento.

Se você precisa armazenar a sessão de uma conexão WS no Android utilizando o Ksoap, já adianto, não é possível fazer utilizando a biblioteca de versão 2.6.5. Mas para tanto, existe uma solução simples, mas que leva tempo para descobrir e segue abaixo.

package br.com.cacula.fv.servicos.soap.connection;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.ksoap2.HeaderProperty;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

public class CustomHttpSE extends HttpTransportSE {
    private String sessionID;
    
    public CustomHttpSE(String URL, int timeout) {
        super(URL, timeout);
    }

    public String getSessionID() {
        return sessionID;
    }

    public void setSessionID(String sessionID) {
        this.sessionID = sessionID;
    }

    @Override
    public List call(String soapAction, SoapEnvelope envelope)
            throws IOException, XmlPullParserException {
        SoapSerializationEnvelope soapEnvelop
        headers = new ArrayList<HeaderProperty>();
        
        if (soapEnvelope.dotNet && !"".equals(sessionID)) {
            headers.add(new HeaderProperty("Cookie", "ASP.NET_SessionId="
                    + sessionID));
        }
        return super.call(soapAction, envelope, headers);
    }

}

Agora utilize a CustomHttpSE ao invés da HttpTransportSE que vem dentro do Ksoap, lembre-se de fazer um set ao sessionID e as seguintes opções de dotNET.

envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setAddAdornments(false);

Abraços,
André Rezende

Anúncios

Um comentário sobre “Sessões SOAP dotNet em Ksoap-android.

  1. Utilizei essa solução e caiu como uma luva… muito obrigado pela dica. #DotNetComplicandoAVidaDosJaveiros

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s