HTTPClient e AJAX

3 respostas
R

Fala galera,

Tenho um probleminha.
Estou fazendo uma aplicação que loga em um sistema, clica em um link e após isso vai para uma página que abre uns radio buttons, entretanto, esses radio button aparecem conforme a disponibilidade do sistema, se existe um item disponivel, aparece.
Essa dinamica creio que seja feita em AJAX, eu preciso marcar o primeiro dos radio button.
A linha do código fonte HTML que aparece, quando eu solicito o código fonte, correspondente a chamada do AJAX é:

1. <input type="hidden" id="formPrincipal:idExecutaRefresh" name="formPrincipal:idExecutaRefresh" value="N"><input type="hidden" name="oracle.adf.faces.FORM" value="formPrincipal"><span id="_formPrincipal_Postscript"><input type="hidden" name="oracle.adf.faces.STATE_TOKEN" value="11"><script>function _formPrincipalValidator(){return true;}var formPrincipal_SF={};</script></span><script>_submitFormCheck();</script></form></body><!-- Created by Oracle ADF Faces (ADF Faces API - 10_1_3_3_0/ADF Faces Implementation - 10_1_3_3_0), skin:oracle.desktop (oracle) -->

parece que tem um campo hidden, acessando um BD Oracle.

Preciso fazer a aplicação marcar um radio button que só aparece quando está disponivel, em AJAX, mas não sei como, alguém pode ajudar?

Obrigado desde já.

3 Respostas

R

Acabei de descobrir um problema, pela minha aplicação o código do ajax simplesmente não carrega.
Esse é o trecho de código HTML da pagina no qual o navegador me mostra e minha aplicação não.

&lt;span id="formPrincipal:idPainelCarregamento"&gt;<img    >&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""&gt;&lt;tr&gt;&lt;td style="background-image:url(/transportador/adf/images/cache/ccclts.gif);background-repeat:no-repeat" width="11" height="11"&gt;&lt;div style="margin-top:11px;padding-left:11px"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td width="100%" class="x8x x5z" style="padding-right:10px"&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""&gt;&lt;tr&gt;&lt;td width="100%" valign="bottom"&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""&gt;&lt;tr&gt;&lt;td&gt;&lt;h1 class="x20 AFHeaderAlias"&gt;Par&acirc;metros&lt;/h1&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="100%" height="1" class="x3o"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="BGAccentLight" height="5" colspan="3"&gt;&lt;div style="margin-top:5px"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="x8x x5q"&gt;<img    >&lt;/td&gt;&lt;td width="100%" class="x8x x5t" style="padding:0px 10px 5px 0px"&gt;&lt;div&gt;&lt;table cellpadding="0" cellspacing="0" border="0" summary=""&gt;&lt;tr&gt;&lt;td&gt;&lt;div&gt;Transportadora&lt;div&gt;&lt;/div&gt;&lt;table id="formPrincipal:idTransportadora__xc_" cellpadding="0" cellspacing="0" border="0" summary=""&gt;&lt;tr&gt;&lt;td class="xe" nowrap&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td valign="top" nowrap&gt;&lt;script&gt;var _pprUpdateMode=false;function _adfspu(f,v,e,s,o){_pprUpdateMode=true;if(!o)o=new Object();o.event=(e)?e:'update';if(s)o.source=s;_submitPartialChange(f,v,o);}&lt;/script&gt;&lt;select id="formPrincipal:idTransportadora" name="formPrincipal:idTransportadora" onchange="_adfspu('formPrincipal',1,'formPrincipal:idTransportadora','formPrincipal:idTransportadora');return true;" class="x6" style="width:370px"&gt;&lt;option value="0" selected&gt;M. M. SEGNINI - ME&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;<img    >&lt;/td&gt;&lt;td&gt;&lt;div&gt;Produto&lt;div&gt;&lt;/div&gt;<img    >&lt;div&gt;&lt;/div&gt;&lt;table id="formPrincipal:idItgrupoSelecionado__xc_" cellpadding="0" cellspacing="0" border="0" summary=""&gt;&lt;tr&gt;&lt;td class="xe" nowrap&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td valign="top" nowrap&gt;&lt;select id="formPrincipal:idItgrupoSelecionado" name="formPrincipal:idItgrupoSelecionado" onchange="_adfspu('formPrincipal',1,'formPrincipal:idItgrupoSelecionado','formPrincipal:idItgrupoSelecionado');return true;" class="x6" style="width:190px"&gt;&lt;option value="0" selected&gt;SUCO CONCENTRADO&lt;/option&gt;&lt;option value="1"&gt;SUCO FRESCO&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;<img    >&lt;/td&gt;&lt;td&gt;&lt;div&gt;Situa&ccedil;&atilde;o&lt;div&gt;&lt;/div&gt;<img    >&lt;div&gt;&lt;/div&gt;&lt;table id="formPrincipal:idSituacaoSelecionada__xc_" cellpadding="0" cellspacing="0" border="0" summary=""&gt;&lt;tr&gt;&lt;td class="xe" nowrap&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td valign="top" nowrap&gt;&lt;select id="formPrincipal:idSituacaoSelecionada" name="formPrincipal:idSituacaoSelecionada" onchange="_adfspu('formPrincipal',1,'formPrincipal:idSituacaoSelecionada','formPrincipal:idSituacaoSelecionada');return true;" class="x6" style="width:150px"&gt;&lt;option value="0" selected&gt;A PROGRAMAR&lt;/option&gt;&lt;option value="1"&gt;PROGRAMADO&lt;/option&gt;&lt;/select&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;<img    >&lt;div id="formPrincipal:idTabelaEventos"&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""&gt;&lt;tr&gt;&lt;td&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary="" class="x2h"&gt;&lt;tr&gt;&lt;td nowrap&gt;&lt;table cellpadding="0" cellspacing="0" border="0" summary=""&gt;&lt;tr&gt;&lt;td nowrap class="x63"&gt;&nbsp;<img    >&lt;/td&gt;&lt;td valign="middle" nowrap&gt;&lt;style type="text/css"&gt; 
                    th.x2z{font-size: 0};
                  &lt;/style&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="100%"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table class="x2f" cellpadding="1" cellspacing="0" border="0" width="100%"&gt;&lt;tr&gt;&lt;th scope="col" width="1%" nowrap class="x2z"&gt;Selecionar&lt;/th&gt;&lt;th scope="col" class="x2x x5o"&gt;Load&lt;/th&gt;&lt;th scope="col" class="x2x x5o"&gt;Origem&lt;/th&gt;&lt;th scope="col" class="x2x x5o"&gt;Destino&lt;/th&gt;&lt;th scope="col" class="x2x x5o"&gt;Produto&lt;/th&gt;&lt;th scope="col" class="x2x x5o"&gt;Horario Carreg.&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="x2s x62"&gt;&lt;input name="formPrincipal:idTabelaEventos:selected" id="formPrincipal:idTabelaEventos:0:idRadio" title="Selecionar" onclick="_adfspu('formPrincipal',1,'formPrincipal:idTabelaEventos','formPrincipal:idTabelaEventos');return true;" type="radio" value="0"&gt;&lt;label for="formPrincipal:idTabelaEventos:0:idRadio" class="x4e"&gt;Selecionar&lt;/label&gt;&lt;/td&gt;&lt;td class="x2n x62"&gt;16451 - 9&lt;/td&gt;&lt;td class="x2n x62"&gt;FABRICA CONCHAL&lt;/td&gt;&lt;td class="x2n x62"&gt;FABRICA COLINA&lt;/td&gt;&lt;td class="x2n x62"&gt;FCOJ&lt;/td&gt;&lt;td class="x2n x62"&gt;21/01/2010 14:20&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="x2v x62"&gt;&lt;input name="formPrincipal:idTabelaEventos:selected" id="formPrincipal:idTabelaEventos:1:idRadio" title="Selecionar" onclick="_adfspu('formPrincipal',1,'formPrincipal:idTabelaEventos','formPrincipal:idTabelaEventos');return true;" type="radio" value="1"&gt;&lt;label for="formPrincipal:idTabelaEventos:1:idRadio" class="x4e"&gt;Selecionar&lt;/label&gt;&lt;/td&gt;&lt;td class="x2o x62"&gt;16451 - 9&lt;/td&gt;&lt;td class="x2o x62"&gt;FABRICA CONCHAL&lt;/td&gt;&lt;td class="x2o x62"&gt;FABRICA COLINA&lt;/td&gt;&lt;td class="x2o x62"&gt;FCOJ&lt;/td&gt;&lt;td class="x2o x62"&gt;21/01/2010 15:10&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" border="0" width="100%" summary=""&gt;&lt;/table&gt;&lt;script&gt;_uixt_formPrincipal_idTabelaEventos=new CollectionComponent('formPrincipal','formPrincipal:idTabelaEventos');&lt;/script&gt;&lt;input type="hidden" name="formPrincipal:idTabelaEventos:rangeStart" value="0"&gt;&lt;/div&gt;<img    >&lt;span id="formPrincipal:_id42"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;

segue o código da aplicação:

package robo_novo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.*;

   public class Main {
     public static void main( String[] args ) throws IOException {
      //declaracao da action do form
      String url = "https://brlnweb.cutrale.com.br/sso/jsp/login.jsp?site2pstoretoken=v1.4~30EF46CF~082F809223216362563C9120C1640E86E2C4A57483FBE1452FE19DF5ED03E425924A0C06A2198EE7F8857D8E62C3FFC05146EADDCC664B9AB2ADA74E763625E68174B166D9037BF3E4869F1E85DEA68460DE51B170737B8C6DD54BD8799AC51DAD0FF056082B517393FD92A47EC61A103FB75A265CD8A06126628A552AF07B90A46BD822240305EA043176E64C503E913A5B5A8CF01CDEC461AFB33672964C05B4D5D790030C0A05E75F7C3FD55B64DC6D35EA5AEAA11F6DB74F552A5FA3854CD5F0B9E836FC119F&p_error_code=&p_submit_url=https%3A%2F%2Fbrlnweb.cutrale.com.br%2Fsso%2Fauth&p_cancel_url=http%3A%2F%2Fwww.cutrale.com.br&ssousername=";

       //criando a conexao e o metodo
       HttpClient client = new HttpClient();
       PostMethod method = new PostMethod( url );

       // configurando os parametros
       method.addParameter( "ssousername", "meuusuario" );
       method.addParameter( "password", "minhasenha" );
       method.addParameter("v", "v1.4");
       method.addParameter("site2pstoretoken","v1.4~30EF46CF~1CCD162C4C43965F5A9BE56D62F74AABCCA1BD029FC66B49691913B5186250DA67F15C3FF8FADA1B4D101EB0DCEC3CCDD089969C38FA6A835C88516952537A94E61484B14DCA11AA9C6D839BE0CCB1792B29A64BDB1F2C7CBAEF1D3BD71325C34793AB115C7BD0D8AB3D15C9ED7F3E4033AEDEFBA1F126C4D5F88D0E101BEBC3AEE1D3DA2EA733A4191A05C5538CA49E6C855E514055095A766069557E67DEF1B024639F7DA943049154D68CBB89C1B2A3537B3AAE9F30CC98F298DD712FE2DC3F7C87E56A35EE63");
       method.addParameter("locale", "");
       method.addParameter("appctx", "");

       // executando o post
       int statusCode = client.executeMethod( method );
      if( statusCode != -1 ) {
         String contents = method.getResponseBodyAsString();
         method.releaseConnection();
       // System.out.println( contents );
      }

       URL u = new URL("http://www.cutrale.com.br/transportador/faces/PILO0260.jsp#");
       URLConnection conn = u.openConnection();
       conn.setDoOutput(true);
       conn.setDoOutput(true);
       OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
       wr.write(url);
       wr.flush();
        String SessionID = conn.getHeaderField("Set-Cookie");
             System.out.println("Session ID:" + SessionID);

             StringBuffer sb = new StringBuffer(50);
             BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
             String line;
             while ((line = rd.readLine()) != null) {
                 sb.append(line + "\n");
             }
             System.out.println("Código: " + sb);
     }
    }
J

Não sei se entendi bem, mas se você examinar o HTML retornado pelo site você consegue descobrir se o RadioButton está lá ou não…
Eu estou fazendo um trabalho que precisa fazer análise do HTML de alguns sites (e, eventualmente, requisitar algo)…
Para fazer o parser do HTML uso essa biblioteca http://jericho.htmlparser.net/docs/index.html
Com ela você consegue facilmente verificar o que tem na página… qual o name dos componentes (utlizado para fazer requisições)…
obter o valor de outros atributos além do name… etc…

Realmente não sei se entendi… mas espero que ajude!

Abs!

R

Olá amigo, se eu tivesse o HTML seria bom, eu saberia interpretar, mas na verdade a página é exibida dinamicamente, em AJAX e não consigo ver o HTML.
Nessa parte dinamica é exibido radio buttons, eu preciso selecionar um deles com minha aplicação, o problema que o minha aplicação não gera o HTML para os radiobuttons, simplesmente não aparece as linhas.
Pelo que vi esse AJAX pega informações de um banco de dados.
Meu problema é que eu não sei como mudar de AJAX para um protocolo HTTP simples.

Criado 21 de janeiro de 2010
Ultima resposta 22 de jan. de 2010
Respostas 3
Participantes 2