Ajuda para consumir webservice

6 respostas
L

Eu preciso fazer um aplicativo para consumir os webservice da SEFAZ/PR (https://nfe.fazenda.pr.gov.br/NFENWebServices/services). Tentei adicionar no NetBeans 6.1 um Cliente para serviço web informando a URL WSDL, por exemplo, https://nfe.fazenda.pr.gov.br/NFENWebServices/services/nfeStatusServicoNF?wsdl.

Mas deve estar acontecendo algo de errado pois está dando a mensagem:

Ao final é exibido a mensagem :

Problema com o download do arquivo wsdl ou do esquema.
Verifique a URL, as configurações do proxy ou se o servidor está em execução.

URL: https://nfe.fazenda.pr.gov.br/NFENWebServices/services/nfeStatusServicoNF?wsdl

Acredito que deva ser algo com o certificado ou algo assim. Será que pode me ajudar?

Att.

Júnior

6 Respostas

R

Você verificou se o servidor que você está tentando acessar está disponível???

T

lhe falta um certificado digital… Mas vc pode usar um wsdl local para fazer a geração

L

Respondendo as perguntas…

Você verificou se o servidor que você está tentando acessar está disponível???

Sim, ele está em on-line…


Post 04/12/2008 13:11:42 Assunto: Ajuda para consumir webservice
lhe falta um certificado digital… Mas vc pode usar um wsdl local para fazer a geração

Acredito ter todos os certificado pois consigo acessar este webservice pelo delphi, por exemplo, e via browser… Mas só tenho eles instalados no browser… Já havia tentendo utilizar o wsdl local, ele até puxa o serviçco mas qdo vou usá-lo dá erro…

Meu código ficou assim:

public static void main(String[] args) {        
        try { // Call Web Service Operation
            br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico service = new br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServico();
            br.inf.portalfiscal.nfe.wsdl.nfestatusservico.NfeStatusServicoSoap port = service.getNfeStatusServicoSoap12();
            // TODO initialize WS operation arguments here
            java.lang.String nfeCabecMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><cabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.02\"><versaoDados>1.10</versaoDados></cabecMsg>";
            java.lang.String nfeDadosMsg = "<?xml version=\"1.0\" encoding=\"utf-8\"?><consStatServ xmlns=\"http://www.portalfiscal.inf.br/nfe\" versao=\"1.07\"><tpAmb>1</tpAmb><cUF>41</cUF><xServ>STATUS</xServ></consStatServ>";
            // TODO process result here
            java.lang.String result = port.nfeStatusServicoNF(nfeCabecMsg, nfeDadosMsg);
            System.out.println("Result = "+result);
        } catch (Exception ex) {
            System.out.println("Erro: "+ ex.getMessage());
        }
    }

O erro na console é:

Erro: HTTP transport error: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
J

Prezado libajunior

acredito que seu erro esta no fato da falta de setar os certificados que serão usados pelo java na conexão segura com webservice…
veja um trecho que retirei aqui mesmo do guj apenas adaptei a minha necessidade, observe um exemplo:

/* Utilização do certificado da empresa em .pfx */

            System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
	System.setProperty("javax.net.ssl.keyStore","./certificadodaempresa2.pfx");
	System.setProperty("javax.net.ssl.keyStorePassword", "123456");

            /*Referece ao Keystore do certificado de homologação do estado de sao paulo */

	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore", "./certifica.jks");
	System.setProperty("javax.net.ssl.trustStorePassword", "123456");
	
            /*Cadeia de certificados utilizado no servidor do Paraná  erram .cer e exportado para o formato keystore java atraves do keytool*/

	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore", "./cadeias\\AC_Certisign_Multipla_G3.jks");
	System.setProperty("javax.net.ssl.trustStorePassword", "123456");  
	
	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore", "./cadeias\\AC_Certisign_G3.jks");
	System.setProperty("javax.net.ssl.trustStorePassword", "123456");
	
	System.setProperty("javax.net.ssl.trustStoreType", "JKS");
	System.setProperty("javax.net.ssl.trustStore", "./cadeias\\AC_Raiz_V1.jks");
	System.setProperty("javax.net.ssl.trustStorePassword", "123456");

Vale lembrar que o webservice usa autenticação mutua ou seja o servidor possui certificado e voce tambem.

espero ter ajudado

J

Este problema foi resolvido com esta resolução, porque estou com o mesmo problema, porém ainda não identifiquei o erro.

M

Esse problema acontece quando o arquivo Cacerts (KeyStore) está incompleto, segue abaixo link com exemplo para geração do Arquivo Cacerts: http://www.javac.com.br/jc/posts/list/34-nfe-geracao-do-arquivo-cacerts-para-todos-os-estados-unico-arquivo.page

Atte.

Criado 4 de dezembro de 2008
Ultima resposta 8 de jun. de 2011
Respostas 6
Participantes 6