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!
Criar Cliente WebService Netbeans
11 Respostas
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.
-
Se achar necessário, editar o arquivo InstallCert.java para mudar nome e senha.
-
Compilar o arquivo InstallCert.java para gerar a classe:
Z:\pamcard>javac InstallCert.java -
Gerar o certificado:
Z:\pamcard>java InstallCert qualidade.gps-pamcary.com.br
Na opção escolher 1 -
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 -
Compilar a classe:
Z:\pamcard>javac Main.java -
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 = "String a ser encriptada";
String alias = "02914460000150c";
String password = "password";
File cert = new File("pamcard.ks");
try {
PrivateKey privateKey = getpriPrivateKeyFromFile(cert, alias, password);
PublicKey publicKey = getPublicKeyFromFile(cert, alias, password);
System.out.println("Algoritmo: " + publicKey.getAlgorithm() + " Format: " + 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("JKS");
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("JKS");
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("SHA1withRSA");
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("SHA1withRSA");
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 = "0123456789abcdef";
StringBuffer sbuffer = new StringBuffer();
for (int i = 0; i < 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("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.keyStoreType", "JKS");
System.setProperty("javax.net.ssl.keyStore", "pamcard.ks");
System.setProperty("javax.net.ssl.keyStorePassword", "password"); //Senha setada no comando keytool -import -file pamcard.crt -keystore pamcard.ks -storepass password -storetype JKS
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
System.setProperty("javax.net.ssl.trustStore", "jssecacerts"); //Nome do arquivo setado no arquivo InstallCert.java
System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); //Senha setada no arquivo InstallCert.java
BASE64Encoder enc = new sun.misc.BASE64Encoder();
byte[] certificate = null;
FileInputStream fis = new FileInputStream("pamcard.crt");
BufferedInputStream bis = new BufferedInputStream(fis);
CertificateFactory cf;
try {
cf = CertificateFactory.getInstance("X.509");
X509Certificate cert = (X509Certificate) cf.generateCertificate(bis);
certificate = cert.getEncoded();
} catch (CertificateException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
String endereco = "https://qualidade.gps-pamcary.com.br/pamcardbrvisa/services/WSPamcard";
String SOAPAction = "execute";
String NameSpace = "http://webservice.pamcard.jee.pamcary.com.br";
String soap = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<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\">" +
"<soapenv:Body>" +
"<ns0:execute xmlns:ns0=\"" + NameSpace + "\" soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">" +
"<ns0:requestTO xsi:type=\"ns0:RequestTO\">" +
"<ns0:certificate xsi:type=\"xsd:base64Binary\">" + enc.encode(certificate) + "</ns0:certificate>" +
"<ns0:context xsi:type=\"xsd:string\">InsertTrip</ns0:context>" +
"<ns0:fields q1:arrayType=\"ns0:FieldTO[31]\" xsi:type=\"q1:Array\">" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.id.cliente</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">100100</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.contratante.documento.numero</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.unidade.documento.tipo</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">1</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.documento.qtde</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">1</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.documento1.tipo</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">7</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.documento1.numero</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.contrato.numero</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.cartao.tipo</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">4</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.cartao.numero</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.cartao.portador.documento.tipo</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">2</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.cartao.portador.documento.numero</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.cartao.portador.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.veiculo.placa</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\"></ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.veiculo.categoria</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">5</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.data.partida</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">26/05/2011</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.origem.pais.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">BRASIL</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.origem.estado.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">SP</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.origem.cidade.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">SAO PAULO</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.destino.pais.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">BRASIL</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.destino.estado.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">RJ</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.destino.cidade.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">RIO DE JANEIRO</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.pontoN.qtde</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">2</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto1.pais.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">BRASIL</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto1.estado.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">SP</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto1.cidade.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">GUARULHOS</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto2.pais.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">BRASIL</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto2.estado.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">RJ</ns0:value>" +
"</ns0:FieldTO>" +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.ponto2.cidade.nome</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">VOLTA REDONDA</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.pedagio.origem</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">1</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.pedagio.roteirizar</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">S</ns0:value>" +
"</ns0:FieldTO> " +
"<ns0:FieldTO xsi:type=\"ns0:FieldTO\">" +
"<ns0:key xsi:type=\"xsd:string\">viagem.parcela.qtde</ns0:key>" +
"<ns0:value xsi:type=\"xsd:string\">0</ns0:value>" +
"</ns0:FieldTO> " +
"</ns0:fields>" +
"<ns0:token xsi:nil=\"true\" xsi:type=\"xsd:string\" /> " +
"</ns0:requestTO>" +
"</ns0:execute>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
URL url = new URL(endereco);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.addRequestProperty("Request-Method", "POST");
connection.addRequestProperty("Content-Type", "text/xml");
connection.addRequestProperty("SOAPAction", SOAPAction);
connection.addRequestProperty("Content-Length", soap.length() + "");
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 = "";
while (null != ((s = br.readLine()))) {
newData.append(s);
}
br.close();
String mensagem = new String(newData);
int ini = mensagem.indexOf("mensagem.descricao");
if (ini > 0) {
System.out.println(mensagem.substring(ini, mensagem.indexOf("</value>", 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();
}
}
}