Request/Response Ajax

Amigos,

Na intranet aqui da empresa estou tentando criar uma rotina de automação para captura de informações em uma página da Intranet, só que utilizando HtmlUnit ou Jsoup não estavam me retornando os dados pretendidos pois aparentemente as informações estão vindo através de uma requisição Ajax.

Vou exemplificar como funciona:

Eu preencho o textField “NOME” e o textField “MATRICULA” e clico em pesquisar e me é retornado em tela todos os dados daquela pessoa.

Outra forma possivel é eu jogar no navegador (www.site.com/?nome=“joao”&matricula=“123456”) ele tambem me retorna em tela os resutados.

O problema é que a pagina (www.site.com) esta fazendo uma solicitação por AJAX para outra página (www.outrosite.com) retornar esses dados e popular a tela. Pesquisando qual é essa requisição verifiquei que está sendo feito desta forma:

(www.outrosite.com/?identificador=“PC123”&nome=“joao”&matricula=“123456”)

Então gostaria de setar diretamente está requisição para obter os dados. Isso é possivel?

Se for alguem saberia me indicar como fazer?

Claro que pode,

vc pode montar a requisição ajax, procure por “ajax jQuery” no tio google, ou outro framework que esteja usando.

Valeu Carlos!

Um detalhe que não falei. Minha aplicação será desktop (swing) o usuario vai selecionar na GUI os campos que servirão como parametros. Ao clicar o botão Iniciar a aplicação irá montar a URL com os parametros para acesso ao site.

Da pra usar o “ajax query” pra desktop?

Ah, então fica mais fácil ainda.

vc vai chamar o browser da aplicação desktop? se sim é só colocar os parâmetros na url, da mesma forma que vc mostrou.

O problema é o seguinte:

Se eu seto www.siteprincipal.com/?nome=“joao”&matricula=“123456” ele carrega o site… e via AJAX ele preenche os dados.

Quando eu seto www.outrosite.com/?nome=“joao”&matricula=“123456”, que é a requisição que acredito que o ajax ta fazendo pra receber os dados… eu to recebendo o conteudo em branco…como se não tivesse nada.

Não ta faltando o identificador? que acredito ser o nome do computador que fez a requisição?

opa foi mal!

Botei sim, na verdade na hora de colar aqui é que esqueci de digitar.

O correto que utilizei é: www.outrosite.com/?identificador=“PC123”&nome=“joao”&matricula=“123456”

existe a possibilidade que seja algo relacionado a proxy dessa segunda URL ou algum cookie?

Hmmm, acho que entendi o problema.

na verdade vc está recebendo uma resposta, mas não está fazendo nada com ela.

quando vc faz uma resquisição ajax ela se parece com isso.

var url = "www.seusite.com";
var data = new Object();

data.identificador = "PC123";
data.nome = "Joao";
data.matricula = 123;

jQuery.ajax({
	url: url,
 	dataType: "json",
	type: "POST",
	contentType: 'application/x-www-form-urlencoded;charset=ISO-8859-1',
	data: data,
	success: setaValoresNaTela
});

function setaValoresNaTela(response) {
jsonObject = response.jsonObject;
...
}

quando vc acessa o siteprincipal este chama o outrosite e recebe um response com os dados e passa pra uma função javascript que processa os dados e exibe na tela.

vc precisa verificar qual é essa função e criar uma igual no outrosite, num arquivo .js

A requisição vai retornar um response pra quem “chamou” ela, então quem tem a função que trata a resposta é o seteprincipal, por isso o outrosite fica em branco.

Isso tudo que disse é o que me aparenta estar acontecendo. vc precisar examinar o html do siteprincipal e seus javascripts.

Mas eu preciso passar os parametros do jeito do código que vc postou ou posso passar como uma Url completa já com os paramentros tendo em vista que no caso em questão é pelo method GET?

Pelo que to vendo minha maior bronca é na resposta que tenho que trata-la de maneira adequada.

pode passar do seu jeito, mas precisa tratar a resposta no outrosite.

Como disse, vc vai precisar estudar os fontes do siteprincipal pra saber o que está sendo feito. (html, jsp, js etc)

Carlos,

Achei o javascript que executa a request do ajax. Olha só:

(function(){try{var a=document.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==document.location.protocol?"https://www.outrosite.com":"http://www.outrosite.com")+"/analise/pesquisa.php?";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);a.onload=function(){try{pesquisa.parse()}catch(a){}};a.onreadystatechange=function(){if("complete"==a.readyState||"loaded"==a.readyState)try{pesquisa.parse()}catch(b){}}}catch(c){}})();

Seria isso?

Aparentemente sim, agora vc precisa formatar o código, endentar e tals pra melhorar a legibilidade, pra depois vc entender o que ele faz.

dá uma olhada no arquivo pesquisa.php, provavél que tenha um método parse, não entendo de php.

mas veja que no onload da página ele chama isso. pra te ajudar com o javascript vc pode instalar o firebug, um plugin pra FireFox, tem tmb pra Chrome se quiser, dá até pra debugar o javascript. recomendo.

a.onload = function() {
try{
pesquisa.parse()
}catch(a){
}
};

É rapaz…acho q nao vou acertar não…