Estou tentando fazer consulta neste site http://cna.oab.org.br/ utilizando JSOUP.
- Capturo o captcha e exibo para o usuário;
- Utilizando os mesmos cookies(sessão) crio uma nova conexão;
- Incluo todos os valores hidden do formulário;
- Em seguida tento realizar a consulta.
O problema é que a consulta sempre vem vazia.
Abaixo o código:
AdvogadoBean.java
private Advogado advogado;
private Map cookies;
private Map dados;
private String contentType;
private String charset;
private String nome;
private String numeroInscricao;
private String seccional;
private String captcha;
private String imagem;
/*getters setters*/
public AdvogadoBean() {
dados = new HashMap<String, String>();
advogado = new Advogado();
advogadoDAO = new AdvogadoDAO();
advogados = advogadoDAO.listarTodos();
imagem = carregaCaptcha();
}
/* Método que carrega Imagem do captcha */
private String carregaCaptcha() {
dados = new HashMap();
String imgSrc = "";
try {
Connection.Response res = Jsoup.connect("http://cna.oab.org.br/")
.timeout(0)
.userAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5")
.method(Connection.Method.POST).execute();
cookies = res.cookies();
contentType = res.contentType();
charset = res.charset();
Document document = res.parse();
Iterator<Element> inputHiddensIter = document.select("form").first().select("input[type=hidden]").iterator();
while (inputHiddensIter.hasNext()) {
Element ele = inputHiddensIter.next();
String name = ele.attr("name");
String val = ele.attr("value");
dados.put(name.trim(), val.trim());
}
/* CAPTCHA */
Element img = document.select("div.LBD_CaptchaDiv img").first();
imgSrc = img.attr("src");
} catch (IOException ex) {
Logger.getLogger(AdvogadoBean.class.getName()).log(Level.SEVERE, null, ex);
}
return imgSrc;
}
/* Método que faz a busca no CNA */
public void buscaDadosCNA() {
try {
dados.put("txtNome", nome.trim());
dados.put("txtNumrInsc", numeroInscricao.trim());
dados.put("cmbSeccional", seccional.trim());
dados.put("cmbTipoInsc", "");
dados.put("txtCaptcha", captcha.trim());
Connection.Response resposta;
resposta = Jsoup.connect("http://cna.oab.org.br/default.aspx")
.data(dados)
.cookies(cookies)
.ignoreContentType(true)
.ignoreHttpErrors(true)
.timeout(0)
.userAgent("Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5")
.method(Connection.Method.POST)
.execute();
Document document = resposta.parse();
Element element = document.getElementById("lblNome");
} catch (IOException ex) {
Logger.getLogger(AdvogadoBean.class.getName()).log(Level.SEVERE, null, ex);
}
}
advogados.xhtml
<h:form prependId="false">
<h:panelGrid>
<h:outputText value="Nome:"/>
<p:inputText value="#{advogadoBean.nome}" size="50"/>
<h:outputText value="Número de Inscrição:"/>
<p:inputText value="#{advogadoBean.numeroInscricao}"/>
<h:outputText value="Seccional:"/>
<p:selectOneMenu value="#{advogadoBean.seccional}">
<f:selectItem itemValue="" itemLabel="Todos"/>
<f:selectItem itemValue="MA" itemLabel="Conselho Seccional - Maranhão"/>
<f:selectItem itemValue="PI" itemLabel="Conselho Seccional - Piauí"/>
</p:selectOneMenu>
</h:panelGrid>
<h:panelGrid columns="2">
<p:graphicImage value="http://cna.oab.org.br/#{advogadoBean.imagem}" id="c_default_captcha_CaptchaImage"/>
</h:panelGrid>
<h:panelGrid>
<h:outputText value="Repita os caractere no campo abaixo:"/>
<p:inputText value="#{advogadoBean.captcha}"/>
<p:commandButton value="Buscar" update="panelDadosCapturados" action="#{advogadoBean.buscaDadosCNA()}"/>
</h:panelGrid>
<p:outputPanel id="panelDadosCapturados">
<h:outputText value="#{advogadoBean.advogado.pessoaFisica.pessoa.nome}"/>
</p:outputPanel>
</h:form>
Espero encontrar alguém com experiência em parse html. Abraços.