Applet NFe conexção [RESOLVIDO]

Pessoal , estou fazendo uma applet para consultas de NFe porem quando vou chamar o WebServices recebo o seguinte erro:

org.apache.axis2.AxisFault: Connection refused: connect 

Segue o método que estou usando :

[code]public String consulta(String chave) {
try {

            String codigoDoEstado = chave.substring(0,2);  
            
            // RIO DE JANEIRO 
            URL url = new URL(HOMOLOGACAO_CONSULTA_SP);
                
                //System.setProperty("http.proxyPort", "80");
            	              
            /** 
             * Xml de Consulta. 
             */  
            StringBuilder xml = new StringBuilder();  
            xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")  
                .append("<consSitNFe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")  
                .append("<tpAmb>"+AMBIENTE+"</tpAmb>")  
                .append("<xServ>CONSULTAR</xServ>")  
                .append("<chNFe>")  
                .append(chave)  
                .append("</chNFe>")  
                .append("</consSitNFe>");  
  
            OMElement ome = AXIOMUtil.stringToOM(xml.toString());  
  
            NfeConsulta2Stub.NfeDadosMsg dadosMsg = new NfeConsulta2Stub.NfeDadosMsg();  
            dadosMsg.setExtraElement(ome);  
  
            NfeConsulta2Stub.NfeCabecMsg nfeCabecMsg = new NfeConsulta2Stub.NfeCabecMsg();  
            /** 
             * Código do Estado. 
             */  
            nfeCabecMsg.setCUF(codigoDoEstado);  
  
            /** 
             * Versao do XML 
             */  
            nfeCabecMsg.setVersaoDados("2.00");  
            NfeConsulta2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeConsulta2Stub.NfeCabecMsgE();  
            nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);  
  
            NfeConsulta2Stub stub = new NfeConsulta2Stub(url.toString());  
            NfeConsulta2Stub.NfeConsultaNF2Result result = stub.nfeConsultaNF2(dadosMsg, nfeCabecMsgE);  
  
            String resposta = result.getExtraElement().toString();
            
            System.out.println(resposta);  
            
            return resposta;
            
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        
        return null;

} [/code]

Eu tenho também a seguinte forma de obter o certificado da maquina do usuario mas não sei como setar isso para a conexção …

Algue já fez algo parecido ?

X509Certificate cert = OnCert.funcCertificadoSelecionado(nomeCert, new String(senhaCert));

Olá jcarlos78,

Cara, tenta fazer dessa forma.

    public static String enviar(String envelope, String urlAddress) {

    	String retorno = "";
    	
        try {
            MessageFactory factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
            SOAPMessage message;

            //setar certificados para conexão

            try {
                MimeHeaders header = new MimeHeaders();
                header.addHeader("Content-Type", "application/soap+xml");

                message = factory.createMessage(header, new ByteArrayInputStream(envelope.getBytes()));
                SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection();
                                
                System.out.println("urlAddress: '" + urlAddress + "'");
                
                URL url = new URL(urlAddress);
                System.out.println("Message enviada \n" + message);                
                SOAPMessage res = con.call(message, url);

                ByteArrayOutputStream in = new ByteArrayOutputStream();
                message.writeTo(in);
                System.out.println("in :\n" + in.toString());
                
                ByteArrayOutputStream out = new ByteArrayOutputStream();
                res.writeTo(out);
                System.out.println("out :\n" + out.toString());
                
                retorno = out.toString();

            } catch (IOException ex) {
            	ex.getMessage();
            }
            
        } catch (SOAPException ex) {
        	ex.getMessage();
        }        
        
        return retorno;
    }

    public String consultaNfe2(String mensagem, String enderecoServidor) {

        StringBuffer soapMessage = new StringBuffer();
        soapMessage.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
        			.append("<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\">")
        			.append("<s:Header>")
        			.append("<nfeCabecMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">")
        			.append("<cUF>" + Utilitario.pegaUfCliente() + "</cUF>")
        			.append("<versaoDados>2.00</versaoDados>")
        			.append("</nfeCabecMsg>")
        			.append("</s:Header>")
        			.append("<s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">")
        			.append(mensagem)
        			.append("</s:Body>")
        			.append("</s:Envelope>");
        
        return enviar(soapMessage.toString(), enderecoServidor);

    }

	public void ConsultaNfe(String chave, String enderecoServidor){
		
		String idNfe = chave.substring(25, 34);
		
		String nfeDados = "<nfeDadosMsg xmlns=\"http://www.portalfiscal.inf.br/nfe/wsdl/NfeConsulta2\">" 
			+ "<consSitNFe  versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">" 
			+ "<tpAmb>" + Utilitario.pegaTipoAmbiente() + "</tpAmb>" 
			+ "<xServ>CONSULTAR</xServ>"
			+ "<chNFe>" + chave + "</chNFe>" 
			+ "</consSitNFe>"
			+ "</nfeDadosMsg>";
		
		log.info("Dados: " + nfeDados + "\n");
		
		String retornoProc = null;

		try {  
		  
			retornoProc = consultaNfe2(nfeDados, enderecoServidor);
			  System.out.println("=================================================================");
            System.out.println(retornoProc);
            System.out.println("=================================================================");

                   
		} catch (Throwable e1) {  
			e1.printStackTrace();
		}					
		
	}

e para invocar

ConsultaNfe(CHAVE, ENDERECO_SERVIDOR);

Qualquer coisa estou a disposição.

Vlw Mackrophus,

Acabei resolvendo meu probelma mudando :

    System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");      
      
    System.setProperty("javax.net.ssl.keyStore", caminhoDoCertificadoDoCliente);      
    System.setProperty("javax.net.ssl.keyStorePassword", senhaDoCertificadoDoCliente);  

Por:

//Utilizando Repositorio do Windows  
  
System.setProperty("javax.net.ssl.keyStoreProvider", "SunMSCAPI");    
System.setProperty("javax.net.ssl.keyStoreType", "Windows-MY");   
  
System.setProperty("javax.net.ssl.keyStoreAlias", xcertificado);    //alias do certificado
System.setProperty("javax.net.ssl.keyStorePassword", senhaDoCertificado);   

Tive ajuda do samuk.exe@hotmail.com no forum Javac.com.br

Segue o código completo que estou usando agora :

public String consulta(String chave) {  
        
        
                String resposta = null;
                
	        try {  
	              
	            String codigoDoEstado = chave.substring(0,2);  
	            
	            // SÃO PAULO
	            URL url = new URL(HOMOLOGACAO_CONSULTA_SP);
                    
                    //System.setProperty("http.proxyPort", "8080");
                    //System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true");  
                    
                    /**  
                    * Informações do Certificado Digital.  
                    */    
                    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", "PKCS12");    

                    System.clearProperty("javax.net.ssl.keyStore");    
                    System.clearProperty("javax.net.ssl.keyStorePassword");    
                    System.clearProperty("javax.net.ssl.trustStore");    

                    System.setProperty("javax.net.ssl.keyStoreProvider", "SunMSCAPI");    
                    System.setProperty("javax.net.ssl.keyStoreType", "Windows-MY");   

                    System.setProperty("javax.net.ssl.keyStoreAlias", SESSAO.getAlias());    
                    System.setProperty("javax.net.ssl.keyStorePassword", new String(SESSAO.getSenhaCert()));
                    
                    System.setProperty("javax.net.ssl.trustStoreType", "JKS");  
                    System.setProperty("javax.net.ssl.trustStore", "C:/app/a1/NFeCacerts");                    
	            	              
	            /** 
	             * Xml de Consulta. 
	             */  
	            StringBuilder xml = new StringBuilder();  
	            xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")  
	                .append("<consSitNFe versao=\"2.00\" xmlns=\"http://www.portalfiscal.inf.br/nfe\">")  
	                .append("<tpAmb>"+AMBIENTE+"</tpAmb>")  
	                .append("<xServ>CONSULTAR</xServ>")  
	                .append("<chNFe>")  
	                .append(chave)  
	                .append("</chNFe>")  
	                .append("</consSitNFe>");  
	  
	            OMElement ome = AXIOMUtil.stringToOM(xml.toString());  
	  
	            NfeConsulta2Stub.NfeDadosMsg dadosMsg = new NfeConsulta2Stub.NfeDadosMsg();  
	            dadosMsg.setExtraElement(ome);  
	  
	            NfeConsulta2Stub.NfeCabecMsg nfeCabecMsg = new NfeConsulta2Stub.NfeCabecMsg();  
	            /** 
	             * Código do Estado. 
	             */  
	            nfeCabecMsg.setCUF(codigoDoEstado);  
	  
	            /** 
	             * Versao do XML 
	             */  
	            nfeCabecMsg.setVersaoDados("2.00");  
	            NfeConsulta2Stub.NfeCabecMsgE nfeCabecMsgE = new NfeConsulta2Stub.NfeCabecMsgE();  
	            nfeCabecMsgE.setNfeCabecMsg(nfeCabecMsg);  
	  
	            NfeConsulta2Stub stub = new NfeConsulta2Stub(url.toString());  
	            NfeConsulta2Stub.NfeConsultaNF2Result result = stub.nfeConsultaNF2(dadosMsg, nfeCabecMsgE);  
	  
	            resposta = result.getExtraElement().toString();
	            
	            System.out.println(resposta);  
	            
	            return resposta;
	            
	        } catch (MalformedURLException | XMLStreamException | RemoteException e) {  
	            this.jTextPane1.setText(e.getMessage());
                    this.jTabbedPane1.setSelectedIndex(4);
                    //e.printStackTrace();  
	        }  finally {
                    
                    this.jTextPane1.setText(resposta);
                    this.jTabbedPane1.setSelectedIndex(4);
                    
                }
	        
	        return resposta;
	    }  	

A unica coisa que ficou faltando eu resolver é como obter o arquivo NFeCacerts dos estados, usando minha applet sem usar um caminho absouto da maquina mas isso acho melhor tratar em outra thread.

Vlw pela ajuda pessoal.

Blz brow, só coloca o post como resolvido, por favor.

Faz um tempo que eu tava tentando descobrir como fazer isso mudar o tópico para [RESOLVIDO] … rs

Só editar o primeiro post … nossa agora parece até bobo mas não foi tão logico até eu descobrir . rs …

Mackrophus, feito :wink: