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.
-
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();
}
}
}