Mostrando postagens com marcador Salesforce. Mostrar todas as postagens
Mostrando postagens com marcador Salesforce. Mostrar todas as postagens

sábado, 29 de janeiro de 2011

Depurando WebServices

Olá Pessoal,

Nesse ultimo mês tive que fazer alguns workarounds para conseguir finalizar um trabalho de integração com o Salesforce, pois bem, aqui vão algumas dicas.

Para capturar os pacotes enviados para os webservices com os clientes C# e Java:

Utilizar o Wireshark para captura dos pacotes, porém caso seja https o soap estará criptografado, o que não irá adiantar de muita coisa, então simplesmente mude o caminho de destino https:// para http://, isso vai fazer com que o servidor recuse o seu pacote, mas já ajuda pra verificar se o envelope soap está enviando os dados corretos.

Verificando os pacotes descobri que realmente tinha coisa errada no C#, devido a propriedade no elemento que não estava sendo enviado no WSDL estar com  minOccurs="0"  o C# simplesmente não enviava os elementos boleanos.

Descoberto isso foi fácil, bastou remover esse atributo do wsdl que a comunicação com o servidor foi realizada com sucesso.

Outra forma de capturar os pacotes, mas nesse caso somente no cliente C#, é habilitar o trace no web.config

<system.diagnostics>
        <trace autoflush="true"/>
        <sources>
            <source name="System.Net"  >
                <listeners>
                    <add name="TraceFile"/>
                </listeners>
            </source>
            <source name="System.Net.Sockets" >
                <listeners>
                    <add name="TraceFile"/>
                </listeners>
            </source>
        </sources>
        <sharedListeners>
            <add name="TraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="trace.log"/>
        </sharedListeners>
        <switches>
            <add name="System.Net" value="Verbose"/>
            <add name="System.Net.Sockets" value="Verbose"/>
        </switches>
    </system.diagnostics>