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!
...try{// Construct dataStringdata=URLEncoder.encode("T1","UTF-8")+"="+URLEncoder.encode(s1,"UTF-8");data+="&"+URLEncoder.encode("T2","UTF-8")+"="+URLEncoder.encode(s2,"UTF-8");// Send dataURLend=newURL("http://localhost:8080/Bone/Logar");URLConnectionconn=end.openConnection();conn.setDoOutput(true);OutputStreamWriterwr=newOutputStreamWriter(conn.getOutputStream());wr.write(data);wr.flush();getAppletContext().showDocument(end);T1.setText("END");//avisa que mandou para o endereço// Get the responseT1.setText("AR");// Aguardando RespostaBufferedReaderrd=newBufferedReader(newInputStreamReader(conn.getInputStream()));Stringline;while((line=rd.readLine())!=null){// Process line...}wr.close();rd.close();}...
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
Giulliano
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 ??
S
shamanpyro
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
kinow
O nome agora é HttpCommons, para usá-lo, tens alguns exemplos em:
Mas é bastante auto-instrutivo, só um CTRL + Space e tudo está resolvido
Abraço
S
shamanpyro
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:
System.out.println("Comparou e deu certo =/!"+usu+senhas+asenha);//abaixoumarequisiçãoemappletassinadaout.println("<html><head><title>Casa Inteligente"+usu+"- Seja Bem vindo "+usu+"!! </title></head><!--CONVERTED_APPLET--><!-- HTML CONVERTER --><center><object classid = clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 codebase = http://java.sun.com/update/1.6.0/jinstall-6u70-windows-i586.cab#Version=6,0,0,6 HEIGHT = 800 > <PARAM NAME = CODE VALUE = "+usu+".class > <PARAM NAME = ARCHIVE VALUE = a"+usu+".jar > <param name = type value = application/x-java-applet;version=1.6> <param name = scriptable value = false> <PARAM NAME = 'IP' VALUE="+ip2+"> <PARAM NAME = 'FRASE' VALUE="+frase+"> <comment> <embed type = application/x-java-applet;version=1.6 CODE = "+usu+".class ARCHIVE = a"+usu+".jar HEIGHT = 600 WIDTH= 600 scriptable = false pluginspage = http://java.sun.com/products/plugin/index.html#download> <noembed> </noembed> </embed> </comment></object><!--<APPLET CODE = "+usu+".class ARCHIVE = a"+usu+".jar HEIGHT = 600 WIDTH=600></APPLET></center>--><!--END_CONVERTED_APPLET--><html>");
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>
S
shamanpyro
consegui. Fiz uma gambiarra mas funcionou ^^. Obrigado pela ajuda
Giulliano
Legal cara…parabéns…se não desse certo vc poderia continuar usando o GET e mandando a senha na url com criptografia.
S
shamanpyro
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 :D.
S
shamanpyro
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
S
shamanpyro
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?
ivo_costa
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.
S
shamanpyro
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
S
shamanpyro
parabens pelo código, muito bem estruturado, tudo encapsulado… dá até vergonha de entregar o meu projeto cheio de POG :oops:
ivo_costa
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.