Você acredita em doPost?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Estou começando a achar que acessar servlets pelo doPost atravéz de Applets não é possível. Baixei alguns tutoriais na internet, mas só consegui fazer Post de páginas HTML para servlets, mas de Applets para Servlets não. Parece tão simples; uma simples função de login dando tanta dor de cabeça? Até consegui por GET, mas não quero o usuário e a senha na barra de endereços. Se alguem puder apontar minha falha, agradeço muito!



Servlet:


Eu depurei o servlet e não cai na requisição Post.. aí as variaveis ficam nulas e não consigo fazer log-in.

Obrigado e um otimo dia a todos!

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
kinow
JavaGuru
[Avatar]

Membro desde: 17/03/2005 14:49:18
Mensagens: 217
Localização: São Paulo
Offline

Yo shamanpyro,

acho que seu problema pode ser a maneira como envia os dados para o server. Você está montando a requisição HTTP corretamente? Isso dá muito trabalho fazer na mão através de conexão, como teria que ser feito. O header de uma chamada a um servlet indica se é GET ou POST (ou qualquer outro método HTTP).

Que tal usar HttpClient (que mudou de nome e não lembro o nome) da apache e fazer uma chamada via post bem mais simples? Garanto que funcionará .

Abraços e ótimo dia também
[WWW] [Yahoo!] [MSN] [ICQ]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

pô cara...vc ainda ta nessa mesma tela de login??? Já pensou em fazer ela em jsp ou até mesmo em html puro ???

eu nunca mexi com applets mas em alguns segundos achei essa resposta...já tentou ??


Solution 2: POST
Does an applet have the ability to POST variables? Yes, it does. And gone are the security problems and visibility of parameters, plus the 3 layers are neatly seperated! Stunning, stunning, stunning.
A piece of Java code at forums.java.sun.com/... offers hope with a HttpURLConnection.

Alas, the applet crashes with a ClassCastException in the statement:

HttpURLConnection http = (HttpURLConnection)url.openConnection();

Grmbl, the JVM's of the different browsers have annoying differences. The browser specific classes for HttpURLConnection differ too much.
It takes a bit of puzzling and trial and error to get things working. The java code below posts variables to a PHP script on the web server private Vector postResult()
throws MalformedURLException, IOException
{ URL url;
URLConnection con;
OutputStream oStream;
String parametersAsString;
byte[] parameterAsBytes;
String aLine; // only if reading response
parametersAsString = "msg=hello&to=world";
parameterAsBytes = parametersAsString.getBytes();
// send parameters to server
url = this.getCodeBase();
url = new URL(url + "index.php3");
con = url.openConnection();
con.setDoOutput(true);
// setDoInput(true); // only if reading response
con.setDoInput(false);
con.setRequestProperty("Content=length", String.valueOf(parameterAsBytes.length));
oStream = con.getOutputStream();
oStream.write(parameterAsBytes);
oStream.flush();
oStream.close();
}

Dear Mr. J. Applet,
Received your message.
Stored contents well.

The server generates a response, lines with text. The applet can read this generated response and use it as input.

The example below shows the server response on the Java console. This piece of Java code will be between the oStream.flush() and the oStream.close(). oStream.flush();
// read response from server
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
aLine = in.readLine();
while (aLine != null)
{ System.out.println(line);
aLine = in.readLine();
}
in.close();
oStream.close();
It works. Good, I'm happy. Got a Java applet talking with a server application:

no messing about with secret passwords,
and with a neat separation between the object and the database layer.



Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Haha, não estou ainda nessa tela de login. Eu decidi deixar em GET a um tempo atráz e partir pra parte funcional do sistema . Mas agora que fiz o funcionamento e uma parte da GUI, o fato do usuário e senha ficar na barra de endereços tá encomodando bastante. Como é tcc eles vão chiar mto por causa disso, mas obrigado pelas respostas. Tentarei o método que vcs sugeriram. Obs: estou usando o NetBeans, alguma ideia de como uso o HttpClient da apache?

Obrigado

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
kinow
JavaGuru
[Avatar]

Membro desde: 17/03/2005 14:49:18
Mensagens: 217
Localização: São Paulo
Offline

O nome agora é HttpCommons, para usá-lo, tens alguns exemplos em:

http://hc.apache.org/httpcomponents-client/examples.html

Mas é bastante auto-instrutivo, só um CTRL + Space e tudo está resolvido

Abraço
[WWW] [Yahoo!] [MSN] [ICQ]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Muito obrigado . Estou tentando aqui, consegui fazer ele entender os parametros mas as variaveis BROXAM. Isso mesmo, eu coloco :
System.out.println(variavel); no servlet pra ver o valor dela... mas quando tento usar este valor na seguinte linha:




aparece o resultado:

Comparou e deu certo =/!LULA1212 -> ele conhece as variaveis

mas na pagina aparece:

<title>Casa Inteligente- Seja Bem vindo!! </title>

.. era pra aparecer
title>Casa Inteligente LULA - Seja Bem vindo LULA" </title>

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

consegui. Fiz uma gambiarra mas funcionou ^^. Obrigado pela ajuda

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
Giulliano
GUJ Master
[Avatar]

Membro desde: 14/11/2006 19:29:38
Mensagens: 1627
Localização: São Paulo
Offline

shamanpyro wrote:consegui. Fiz uma gambiarra mas funcionou ^^. Obrigado pela ajuda


Legal cara..parabéns...se não desse certo vc poderia continuar usando o GET e mandando a senha na url com criptografia.

Oracle Certified Master, Java EE 5 Enterprise Architect
Oracle Certified Professional Java Programmer
GiuLLianO MoRRoNi




<UnTouChAbLe>
[Email] [WWW] [MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Boa!. Estou estudando criar um protocolo de criptografia na mão. Não sei se compensa, ou é melhor usar as apis do java para isso? Ah, mesmo com Post o certo é criptografar os dados. Substituir get por post não muda o fato de que os dados estão passando, qualquer sniffer pode ler os dados inteirinhos. Obrigado pela dica .

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Ixi.. tá acontecendo um erro bem estranho oO. No FireFox até que funciona legal. Já no IE, ele só loga na proxima tentativa, independente do que eu coloque. Ex. Eu coloco o usuario e a senha certos e ele dá negado. Na proxima tentativa eu coloco qualquer coisa, que pode ser certo ou não e ele permite. Alguem sabe o pq disso? oO

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

percebi uma coisa: no IE o que determina se vai logar ou não é a primeira vez. Se vc acertar de primeira, otimo. Senão terá que abrir o navegador denovo oO. Se acertar de primeira e quiser colocar o usuario e senha errados ele entra mesmo assim. Sera que é problema de threads?

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
ivo costa
JavaEvangelist
[Avatar]

Membro desde: 06/11/2007 12:07:34
Mensagens: 493
Localização: Porto Alegre - RS
Offline

Cara estou dando um olhada na sua pelegrinação e vou ter dar alguns conselhos:
Fuja de applet! Applet só serve pra responder questões no javaranch.
Um forma de fazer um aplicação "web off-line" é usar Java Web Start. Com JWS vc pode fazer qualquer coisa que uma aplicação desktop possa fazer e disponibilizar ela online.

Pra vc passar o teu programa de applet para JWS não vai complicar muito, pq as telas vão ter o mesmo código.
Eu estou te enviando um trabalho que eu fiz numa cadeira. É um programa em JWS que faz chamadas a servlets, agora não precisa mais fazer um post vc pode fazer chamadas como eu estou fazendo nesse programa. O programa é um quiz que busca as perguntas no servidor e salva os recordes no servidor (os recordes não estão funcionando).
Então é isso, faça em JWS e seja feliz.

No arquivo tem um projeto netbeans, os fontes dos servlets e um bat para assinar o jar.
 Nome do arquivo Quiz.rar [Disk] Download
 Descrição Quiz
 Tamanho 53 Kbytes
 Baixado:  69 vez(es)

This message was edited 1 time. Last update was at 09/09/2008 10:12:56


Eu sonho com um mundo melhor, onde galinhas que atravessam a rua não serão questionadas pelos seus motivos.
Formate o seu código usando as tags [code] http://www.guj.com.br/posts/list/50115.java
Faça perguntas inteligentes
[MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

Muito obrigado! Então, no meu sistema eu me baseei inteiro em applets e servlets, pra migrar não dá mto trabalho? eu uso imagens, sockets... dá pra fazer td isso? Se sim gostaria de conhecer esse método diferente. Valew mesmo, e um ótimo dia!

Obs: Eu troque ou não as applets vc já me ajudou:estou usando applets assinadas e procurava um meio de assinar "automático". Eu ia fazer um .bat pra mexer nos policys, vou usar o seu de base ok? é que nunca mexi com bat =P

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
shamanpyro
JavaEvangelist

Membro desde: 06/07/2008 21:16:11
Mensagens: 313
Offline

parabens pelo código, muito bem estruturado, tudo encapsulado... dá até vergonha de entregar o meu projeto cheio de POG

Java é dificil. MUUITO difícil. Mas você não vai conseguir se não tentar =]
[MSN]
ivo costa
JavaEvangelist
[Avatar]

Membro desde: 06/11/2007 12:07:34
Mensagens: 493
Localização: Porto Alegre - RS
Offline

Vom JWS dá pra fazer tudo que as applets fazem e mais um pouco, o JWS vai rodar local no cliente então pode abrir socket, pode deletar arquivo, pode fazer upload do arquivo senhas.txt dele, pode reiniciar o computador....

Para mudar de applet para JWS basta mudar a sua tela que extends de Applet para extender Jframe. Coloque um método main e gere um jar que seja executável. Se funcionar local basta colocar o jar no diretório da aplicação no tomcat e fazer um .jnpl. Qualquer coisa posta ae.

Eu sonho com um mundo melhor, onde galinhas que atravessam a rua não serão questionadas pelos seus motivos.
Formate o seu código usando as tags [code] http://www.guj.com.br/posts/list/50115.java
Faça perguntas inteligentes
[MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team