Problemas ao efetuar POST em HTML

10 respostas
D

Boa tarde galera.

Estou participando de um projeto desktop em java, que terá que acessar a URL da sefaz nacional de NFe, postar a chave de acesso no html e recuperar os dados da nota para montar um XML. Estou com problemas quanto ao postar a chave e recuperar os dados : seguem abaixo parte do código de POST (O que ocorre simplesmente é não postar a chave e continuar lendo somente o primeiro html) :

//Método que retorna a conexão da URL

public static HttpURLConnection htmlConection() throws IOException
{

try
	{
	URL url = new URL(
			"http://www.nfe.fazenda.gov.br/portal/consulta.aspx?tipoConsulta=completa&tipoConteudo=XbSeqxE8pl8=");
	HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();

	urlcon.setRequestMethod("POST");
	urlcon.setRequestProperty("Content-type","application/x-www-form-urlencoded");
	urlcon.setDoOutput(true);
	urlcon.setDoInput(true);
	urlcon.setUseCaches(false);
	
	return urlcon;
	
	}
	catch (HTTPException ex)
	{
		System.err.println("Erro de acesso à URL" + ex.getMessage());
		ex.printStackTrace();
	}
	return null;
}

}

//Método de POST do html

public class PostHtml
{

protected HttpURLConnection urlConnect;
protected String chave;
protected DataOutputStream dos;
protected static final String Parametro = "ContentPlaceHolder1_txtChaveAcessoCompleta";


public PostHtml(HttpURLConnection urlConn, String chaveAcesso)
{
	this.urlConnect = urlConn;
	this.chave = chaveAcesso;
}



public HttpURLConnection postHtml ()
{
	
	String dados = null;
	
	try 
	{
		
       if (chave != null)
       {
		dados = URLEncoder.encode(
				"ctl00$ContentPlaceHolder1$txtChaveAcessoCompleta", "UTF-8")
				+ "="
				+ URLEncoder.encode(
						chave,
						"UTF-8");
       }
		
		dos = new DataOutputStream(urlConnect.getOutputStream());

		dos.writeBytes(dados);
		dos.flush();
		dos.close();
		
	   return urlConnect;	

	} 
	catch (Exception e)
	{

		System.err.println("Erro ao efetuar Post" + e.getMessage());
		e.printStackTrace();
	}

	return null;
	

	
		}

   }

Alguem poderia me ajudar ?

10 Respostas

A

cara,

nao seria mais facil vc utilizar Web Services para isso, NFE, disponibiliza esse serviço.

t+

D

Então Alisson, seria o ideal e o que é utilizado mesmo quando se trata de consultar e pegar informações para gerar xml, mas é que neste caso é um desafio para um projeto em desktop que teremos que fazer dessa forma. Mas está complicado inclusive devido a um captcha que a url possui. Além de postar a chave antes de submeter o formulário existe um captcha que deve ser quebrado. É um desafio e tanto. Mas se conseguir algo em relação à esse post agradeço, a princípio estou estudando o Jakarta da apache para tentar isto utilizando o HTTPClient.

ate

A

entendi cara,

seu grande desafio vai ser o captcha msm, pois o intuito dele é evitar acesso automatizados a paginas, como eles dizem os “robos”.
Não sei se vc vai conseguir, mas se consegui posta ai.

t+

D

É , com certeza o captcha é o mais complicado, mas se você tiver uma dica para efetuar esse post e pegar alguma informação do site já seria de bom tamanho, estou utilizando o HTTPClient da Apache agora , o código é bem mais flexível e mais resumido. Se você ou alguém do GUJ souber e puder me ajudar nessa parte do post (com exemplos etc), eu agradeço muito.

Abraço!

D

É , na verdade o maior problema é o captcha mesmo, mas estou tendo problemas de lógica com o post, não é nem problema de compilação. Caso você ou alguem do Guj saiba ou tenha alguma dica , eu agradeceria muita. Necessito efetuar o post e recuperar informações da nota para poder gerar o xml.

abraço!

A

cara,

segue um exemplo usando post com httpClient.

http://www.java2s.com/Code/Java/Apache-Common/HttppostmethodExample.htm

t+

D

Obrigado Alisson, estou testando alguns exemplos da pagina do jakarta e irei testar o que você postou também.

abraço

ate+

R

Alguém coseguiu? se sim, posta a lógica de como fazer essa façanha…

mauricioadl

uma pergunta besta, vc nao pode usar webservices? lembrando que webservices podem ser usados normalmente em projetos desktop.

R

Alguem tem alguma solucao para o problema? se sim por favor poste a mesma.

Criado 14 de outubro de 2011
Ultima resposta 12 de jan. de 2012
Respostas 10
Participantes 4