Criar Cliente WebService Netbeans

Galera estou tentando criar um cliente de um webservice no Netbeans e não estou conseguindo, segue o wsdl https://qualidade.gps-pamcary.com.br/pamcardbrvisa/services/WSPamcard?wsdl
Alguem poderia me dar uma dica de como consumir este webservice? Obrigado!

Boa tarde!

Estou com essa mesma tarefa, mesmo wsdl, você conseguiu algo?

Obrigado!!!

Olá amigo, ressuscitou o tópico heim hehe, cara hoje em dia isso ta facil, no netbeans ele mesmo gera tudo vc só tem que passar o endereço do wsdl, da uma pesquisada no site do netbeans que tem ensinando, o mesmo para eclipse t+

Olá Shakall,

realmente, depois de longo tempo, o tópico saiu do coma.

Estou tentando com Eclipse e utilizando comandos na mão, porém, estão ocorrendo alguns erros com relação ao Style=“rpc” do wsdl enviado para nós.

Para tentar seguir um caminho mais certo, você desenvolveu utilizando qual estrutura? Estou tentando com Axis2, wsimport e wsdl2java, mas ainda não consegui praticamente nada.

Obrigado pelo retorno!

Amigo não precisa reinventar a roda, se as IDEs de hoje fazem isso automaticamente pra ti, usa elas!
No eclipse tu vai no seu projeto, clica com o botão direito sobre ele, escolhe others, vai em webservices, webservices client, em service definition coloca a url do wsdl https://qualidade.gps-pamcary.com.br/pamcardbrvisa/services/WSPamcard?wsdl e clica em next, depois finish.

Pronto seu cliente WS está criado e pronto para usar, agora no seu código utiliza os objetos criados e seus respectivos métodos.

É possível criar do zero? Sim eu fiz isso mas a muito tempo atrás, criando os xml puros e trocando informações, mas é perca de tempo, além de ficar algo seu, ou seja só tu vai entender hehe dá muito trabalho e tu vai perder muito tempo com isso, então faz da forma que te falei acima que é mais facil.

Então Shakall,

não tenho nenhuma experiência com Eclipse, estou começando a utilizar agora, a princípio para ganhar intimidade com a IDE e começar a sair da era dos dinossauros.

Até esse ponto que você citou eu consegui chegar, mas, e depois? Como fazer para inserir o certificado no Eclipse? Sendo mais realista, o que faço depois?

Andei pesquisando sobre o problema que encontrei fazendo “na mão”, tem alguma relação com utilização do Axis 2 em um WSDL gerado para Axis 1, mas ainda não consegui a solução.

Novamente Shakall, obrigado pelo retorno e, se puder dar mais algumas dicas, ficarei muito grato!!!

Obrigado!!!

Entendi teu problema é usar o certificado digital, o processo que te passei seria para consumir um webservice simples, com certeza a forma que te passei tem como vc adicionar o certificado mas desta forma nunca fiz ai teria que dar uma estudada.

A 2 anos atrás fiz um processo de consultar o cpg pela pamcary, usando certificado digital mas foi tudo na mão como eu falei, eu crei os xmls de envio e recebimento, se tui quiser posso te passar, mas como faz tempo nem eu mesmo sei o que fazer mais.

Lembro que tive que gerar o arquivo digital por programas, ai pega esta arquivo e coloca em um local, era complicado!

Quero sim, agradeço muito se puder dar as dicas.

Não sei se é algo parecido com o processo de desenvolvimento para emissão de NFe, pois estou fazendo o da Pamcary baseado nos testes que fiz para emissão de NFe, que também fiz “na mão”, com auxílio dos Flintstones, hehehe.

Para NFe consegui consultar o Status, deu tudo, aparentemente, certo, porém, pelo que entendi, a diferença é que o WSDL da NFe é mais atual, e, como o da Pamcary é mais antigo, o Axis2 não está conseguindo criar os arquivos.

Se lembrar de qualquer coisa e puder ir passando, as vezes uma dica a mais já adianta um lado enorme.

Obrigado!!!

Me passa teu email por MP, ai te envio o projeto, ele foi feito no netbeans.

Pessoal, para quem precisar, vou postar abaixo os passos que segui para funcionamento da conexão.

A parte fundamental, que é o arquivo Main.java, foi desenvolvido pelo Shakall, que me ajudou muito na solução e a quem sou muito grato.

Os dois arquivos, Main.java e InstallCert.java vou postar separado, para não ficar confuso em somente uma mensagem.

  1. Se achar necessário, editar o arquivo InstallCert.java para mudar nome e senha.

  2. Compilar o arquivo InstallCert.java para gerar a classe:
    Z:\pamcard>javac InstallCert.java

  3. Gerar o certificado:
    Z:\pamcard>java InstallCert qualidade.gps-pamcary.com.br
    Na opção escolher 1

  4. Exportar o certificado recebido pela empresa para o tipo JKS (mudar a senha password abaixo):
    Z:\pamcard>keytool -import -file pamcard.crt -keystore pamcard.ks -storepass password -storetype JKS

  5. Compilar a classe:
    Z:\pamcard>javac Main.java

  6. Testar:
    Z:\pamcard>java Main

InstallCert.java


/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

import java.io.*;
import java.net.URL;

import java.security.*;
import java.security.cert.*;

import javax.net.ssl.*;

public class InstallCert {

    public static void main(String[] args) throws Exception {
	String host;
	int port;
	char[] passphrase;
	if ((args.length == 1) || (args.length == 2)) {
	    String[] c = args[0].split(":");
	    host = c[0];
	    port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);
	    String p = (args.length == 1) ? "changeit" : args[1];
	    passphrase = p.toCharArray();
	} else {
	    System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");
	    return;
	}

	File file = new File("jssecacerts");
	if (file.isFile() == false) {
	    char SEP = File.separatorChar;
	    File dir = new File(System.getProperty("java.home") + SEP
		    + "lib" + SEP + "security");
	    file = new File(dir, "jssecacerts");
	    if (file.isFile() == false) {
		file = new File(dir, "cacerts");
	    }
	}
	System.out.println("Loading KeyStore " + file + "...");
	InputStream in = new FileInputStream(file);
	KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
	ks.load(in, passphrase);
	in.close();

	SSLContext context = SSLContext.getInstance("TLS");
	TrustManagerFactory tmf =
	    TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
	tmf.init(ks);
	X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];
	SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);
	context.init(null, new TrustManager[] {tm}, null);
	SSLSocketFactory factory = context.getSocketFactory();

	System.out.println("Opening connection to " + host + ":" + port + "...");
	SSLSocket socket = (SSLSocket)factory.createSocket(host, port);
	socket.setSoTimeout(10000);
	try {
	    System.out.println("Starting SSL handshake...");
	    socket.startHandshake();
	    socket.close();
	    System.out.println();
	    System.out.println("No errors, certificate is already trusted");
	} catch (SSLException e) {
	    System.out.println();
	    e.printStackTrace(System.out);
	}

	X509Certificate[] chain = tm.chain;
	if (chain == null) {
	    System.out.println("Could not obtain server certificate chain");
	    return;
	}

	BufferedReader reader =
		new BufferedReader(new InputStreamReader(System.in));

	System.out.println();
	System.out.println("Server sent " + chain.length + " certificate(s):");
	System.out.println();
	MessageDigest sha1 = MessageDigest.getInstance("SHA1");
	MessageDigest md5 = MessageDigest.getInstance("MD5");
	for (int i = 0; i < chain.length; i++) {
	    X509Certificate cert = chain[i];
	    System.out.println
	    	(" " + (i + 1) + " Subject " + cert.getSubjectDN());
	    System.out.println("   Issuer  " + cert.getIssuerDN());
	    sha1.update(cert.getEncoded());
	    System.out.println("   sha1    " + toHexString(sha1.digest()));
	    md5.update(cert.getEncoded());
	    System.out.println("   md5     " + toHexString(md5.digest()));
	    System.out.println();
	}

	System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");
	String line = reader.readLine().trim();
	int k;
	try {
	    k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;
	} catch (NumberFormatException e) {
	    System.out.println("KeyStore not changed");
	    return;
	}

	X509Certificate cert = chain[k];
	String alias = host + "-" + (k + 1);
	ks.setCertificateEntry(alias, cert);

	OutputStream out = new FileOutputStream("jssecacerts");
	ks.store(out, passphrase);
	out.close();

	System.out.println();
	System.out.println(cert);
	System.out.println();
	System.out.println
		("Added certificate to keystore 'jssecacerts' using alias '"
		+ alias + "'");
    }

    private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();

    private static String toHexString(byte[] bytes) {
	StringBuilder sb = new StringBuilder(bytes.length * 3);
	for (int b : bytes) {
	    b &= 0xff;
	    sb.append(HEXDIGITS[b >> 4]);
	    sb.append(HEXDIGITS[b & 15]);
	    sb.append(' ');
	}
	return sb.toString();
    }

    private static class SavingTrustManager implements X509TrustManager {

	private final X509TrustManager tm;
	private X509Certificate[] chain;

	SavingTrustManager(X509TrustManager tm) {
	    this.tm = tm;
	}

	public X509Certificate[] getAcceptedIssuers() {
	    throw new UnsupportedOperationException();
	}

	public void checkClientTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    throw new UnsupportedOperationException();
	}

	public void checkServerTrusted(X509Certificate[] chain, String authType)
		throws CertificateException {
	    this.chain = chain;
	    tm.checkServerTrusted(chain, authType);
	}
    }

}

Main.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//package pamcardws;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.security.Key;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Security;
import java.security.Signature;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.net.ssl.SSLException;
import sun.misc.BASE64Encoder;

/**
 *
 * @author Shakall
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        //pamcardWS();
        pamcardWSold();
    }

    public static void pamcardWS() {
        String txt = &quot;String a ser encriptada&quot;;
        String alias = &quot;02914460000150c&quot;;
        String password = &quot;password&quot;;
        File cert = new File(&quot;pamcard.ks&quot;);
        try {
            PrivateKey privateKey = getpriPrivateKeyFromFile(cert, alias, password);
            PublicKey publicKey = getPublicKeyFromFile(cert, alias, password);
            System.out.println(&quot;Algoritmo: &quot; + publicKey.getAlgorithm() + &quot; Format: &quot; + publicKey.getFormat());
        } catch (Exception ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static PrivateKey getpriPrivateKeyFromFile(File cert, String alias, String password) throws Exception {
        KeyStore ks = KeyStore.getInstance(&quot;JKS&quot;);
        char[] pwd = password.toCharArray();
        InputStream is = new FileInputStream(cert);
        ks.load(is, pwd);
        is.close();
        if (ks.containsAlias(alias)) {
            Key key = ks.getKey(alias, pwd);
            if (key instanceof PrivateKey) {
                return (PrivateKey) key;
            }
        }
        return null;
    }

    public static PublicKey getPublicKeyFromFile(File cert, String alias, String password) throws Exception {
        KeyStore ks = KeyStore.getInstance(&quot;JKS&quot;);
        char[] pwd = password.toCharArray();
        InputStream is = new FileInputStream(cert);
        ks.load(is, pwd);
        Key key = ks.getKey(alias, pwd);
        is.close();
        Certificate c = ks.getCertificate(alias);
        PublicKey p = c.getPublicKey();
        return p;
    }

    public static byte[] createSignature(PrivateKey key, byte[] buffer) throws Exception {
        Signature sig = Signature.getInstance(&quot;SHA1withRSA&quot;);
        sig.initSign(key);
        sig.update(buffer, 0, buffer.length);
        return sig.sign();
    }

    /**
     * Verifica a assinatura para o buffer de bytes, usando a chave pública.
     * @param key PublicKey
     * @param buffer Array de bytes a ser verficado.
     * @param sgined Array de bytes assinado (encriptado) a ser verficado.
     */
    public static boolean verifySignature(PublicKey key, byte[] buffer, byte[] signed) throws Exception {
        Signature sig = Signature.getInstance(&quot;SHA1withRSA&quot;);
        sig.initVerify(key);
        sig.update(buffer, 0, buffer.length);
        return sig.verify(signed);
    }

    public static String txt2Hexa(byte[] bytes) {
        if (bytes == null) {
            return null;
        }
        String hexDigits = &quot;0123456789abcdef&quot;;
        StringBuffer sbuffer = new StringBuffer();
        for (int i = 0; i &lt; bytes.length; i++) {
            int j = ((int) bytes[i]) & 0xFF;
            sbuffer.append(hexDigits.charAt(j / 16));
            sbuffer.append(hexDigits.charAt(j % 16));
        }
        return sbuffer.toString();
    }

    private static void pamcardWSold() {
        try {
            System.setProperty(&quot;java.protocol.handler.pkgs&quot;, &quot;com.sun.net.ssl.internal.www.protocol&quot;);
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            System.setProperty(&quot;javax.net.ssl.keyStoreType&quot;, &quot;JKS&quot;);
            System.setProperty(&quot;javax.net.ssl.keyStore&quot;, &quot;pamcard.ks&quot;);
            System.setProperty(&quot;javax.net.ssl.keyStorePassword&quot;, &quot;password&quot;); //Senha setada no comando keytool -import -file pamcard.crt -keystore pamcard.ks -storepass password -storetype JKS
            System.setProperty(&quot;javax.net.ssl.trustStoreType&quot;, &quot;JKS&quot;);
            System.setProperty(&quot;javax.net.ssl.trustStore&quot;, &quot;jssecacerts&quot;); //Nome do arquivo setado no arquivo InstallCert.java
            System.setProperty(&quot;javax.net.ssl.trustStorePassword&quot;, &quot;changeit&quot;); //Senha setada no arquivo InstallCert.java


            BASE64Encoder enc = new sun.misc.BASE64Encoder();
            byte[] certificate = null;
            FileInputStream fis = new FileInputStream(&quot;pamcard.crt&quot;);
            BufferedInputStream bis = new BufferedInputStream(fis);
            CertificateFactory cf;
            try {
                cf = CertificateFactory.getInstance(&quot;X.509&quot;);
                X509Certificate cert = (X509Certificate) cf.generateCertificate(bis);
                certificate = cert.getEncoded();

            } catch (CertificateException ex) {
                Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
            }
            String endereco = &quot;https://qualidade.gps-pamcary.com.br/pamcardbrvisa/services/WSPamcard&quot;;
            String SOAPAction = &quot;execute&quot;;
            String NameSpace = &quot;http://webservice.pamcard.jee.pamcary.com.br&quot;;
            String soap = &quot;&lt;?xml version=\&quot;1.0\&quot; encoding=\&quot;UTF-8\&quot;?&gt;&quot; +
                    &quot;&lt;soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://webservice.to.core.jee.hst.com.br\" xmlns:q1=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"&gt;" +
                    "&lt;soapenv:Body&gt;" +
                    "&lt;ns0:execute xmlns:ns0=\"" + NameSpace + "\" soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"&gt;" +
                    "&lt;ns0:requestTO xsi:type=\"ns0:RequestTO\"&gt;" +
                    "&lt;ns0:certificate xsi:type=\"xsd:base64Binary\"&gt;" + enc.encode(certificate) + "&lt;/ns0:certificate&gt;" +
                    "&lt;ns0:context xsi:type=\"xsd:string\"&gt;InsertTrip&lt;/ns0:context&gt;" +
                    "&lt;ns0:fields q1:arrayType=\"ns0:FieldTO[31]\" xsi:type=\"q1:Array\"&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.id.cliente&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;100100&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.contratante.documento.numero&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.unidade.documento.tipo&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;1&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.documento.qtde&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;1&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.documento1.tipo&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;7&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.documento1.numero&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.contrato.numero&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.cartao.tipo&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;4&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.cartao.numero&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.cartao.portador.documento.tipo&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;2&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.cartao.portador.documento.numero&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;                          " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.cartao.portador.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.veiculo.placa&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.veiculo.categoria&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;5&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;            " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.data.partida&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;26/05/2011&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;   " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.origem.pais.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;BRASIL&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.origem.estado.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;SP&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.origem.cidade.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;SAO PAULO&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.destino.pais.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;BRASIL&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.destino.estado.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;RJ&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.destino.cidade.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;RIO DE JANEIRO&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;  " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.pontoN.qtde&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;2&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;            " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto1.pais.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;BRASIL&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto1.estado.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;SP&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto1.cidade.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;GUARULHOS&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto2.pais.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;BRASIL&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto2.estado.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;RJ&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;" +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.ponto2.cidade.nome&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;VOLTA REDONDA&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;  " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.pedagio.origem&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;1&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt; " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.pedagio.roteirizar&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;S&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt; " +
                    "&lt;ns0:FieldTO xsi:type=\"ns0:FieldTO\"&gt;" +
                    "&lt;ns0:key xsi:type=\"xsd:string\"&gt;viagem.parcela.qtde&lt;/ns0:key&gt;" +
                    "&lt;ns0:value xsi:type=\"xsd:string\"&gt;0&lt;/ns0:value&gt;" +
                    "&lt;/ns0:FieldTO&gt;           " +
                    "&lt;/ns0:fields&gt;" +
                    "&lt;ns0:token xsi:nil=\"true\" xsi:type=\"xsd:string\" /&gt; " +
                    "&lt;/ns0:requestTO&gt;" +
                    "&lt;/ns0:execute&gt;" +
                    "&lt;/soapenv:Body&gt;" +
                    "&lt;/soapenv:Envelope&gt;&quot;;
            URL url = new URL(endereco);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.addRequestProperty(&quot;Request-Method&quot;, &quot;POST&quot;);
            connection.addRequestProperty(&quot;Content-Type&quot;, &quot;text/xml&quot;);
            connection.addRequestProperty(&quot;SOAPAction&quot;, SOAPAction);
            connection.addRequestProperty(&quot;Content-Length&quot;, soap.length() + &quot;&quot;);
            connection.setDoOutput(true);
            connection.setDoInput(true);
            OutputStream out = connection.getOutputStream();
            out.write(soap.getBytes());
            out.flush();
            connection.connect();
            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK || connection.getResponseCode() == HttpURLConnection.HTTP_ACCEPTED) {
                BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                StringBuffer newData = new StringBuffer();
                String s = &quot;&quot;;
                while (null != ((s = br.readLine()))) {
                    newData.append(s);
                }
                br.close();
                String mensagem = new String(newData);
                int ini = mensagem.indexOf(&quot;mensagem.descricao&quot;);
                if (ini &gt; 0) {
                    System.out.println(mensagem.substring(ini, mensagem.indexOf(&quot;&lt;/value&gt;", ini + 1)));
                } else {
                    System.out.println(new String(newData));
                }
            } else {
                System.out.println(connection.getResponseCode() + "/" + connection.getResponseMessage());
            }
            connection.disconnect();

        } catch (SSLException e) {
            e.printStackTrace();
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        } catch (IOException io) {
            io.printStackTrace();
        }
    }
}