Problema Servlet básico

8 respostas
pedroroxd

Pessoal, estou com um probleminha...

Estou com fazendo um serviço para celulares... E o cliente tem que se cadastrar no banco de dados...

- O cliente entra em uma página, digita o número do celular dele...
- Um código de confirmação é gerado aleatóriamente, e enviado para o celular dele
- Ele digita o código no site. Se for o código enviado ele é cadastrado...

Problema:
O modo que envio a mensagem é um jeito que meu amigo ajeitou pra mim, que é nada mais nada menos do que apenas uma URL, do tipo:
http://dominiodele.com.br/Envio/smsacc.pkm?action=api&user=XXXXX&pass=YYYY&conta=ZZZZZ&numeropara=5535XXXXXX&msg=teste+de+msg

Fiz assim: (Página html)
<html>
<body>
Para utilizar nosso serviço, você necessita fazer o cadastro do seu celular no banco de dados.
Tenha em mente que o cadastro é gratuito.
Após clicar em enviar, você receberá um código de confirmação em seu celular, 
que deverá ser preenchido aqui para a conclusão do cadastro.

<form action="EnviaSMS">
Número do seu Celular: <input type="text" name="numero" /><br />
<input type="submit" value="Enviar" />
</form>

</body>
</html>
Minha servlet:
public class EnviaSMS extends HttpServlet {

	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
	     //GERANDO A STRING ALEATORIA
		Random rand = new Random();
		char[] letras = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();  
	     StringBuffer sb = new StringBuffer();  
	     for (int i = 0; i < 8; i++) {  
	         int ch = rand.nextInt (letras.length);  
	         sb.append (letras [ch]);  
	     } 
	     //FIM
	     
	     String aleatoria = sb.toString();
	     
		 String numerodotelefone = request.getParameter("numero");  
		 //PROBLEMAS (Leia abaixo)
		  response.sendRedirect("digiteocodigo.html"); //passando parâmetro o número do telefone e a String aleatória 
		       
	}
}
Como vou fazer? Abrir duas páginas ao mesmo tempo? Tenho que: 1) Abrir a URL de enviar a SMS 2) Abrir a página de confirmação de código (passando como parâmetro o código gerado) 3) Não deixar o usuário ver a página de enviar SMS (pq se não ele descobre a url com minha senha, e fode tudo)

8 Respostas

R

Uma pergunta off-topic:como é implementada tua solução de SMS?

pedroroxd

Não é minha, é de uma empresa, e é um serviço pago…
Só tenho disponível essa URL… Cada vez que é disparada eu pago uma certa quantia…

Voltando a pergunta: Como que faço pra servlet disparar essa url, mas que não seja visualizada pelo usuário?

R

Não é minha, é de uma empresa, e é um serviço pago…
Só tenho disponível essa URL… Cada vez que é disparada eu pago uma certa quantia…

Voltando a pergunta: Como que faço pra servlet disparar essa url, mas que não seja visualizada pelo usuário?

Se vc estiver se referindo aos parâmetros da requisição,basta mudar o método do form para POST.

pedroroxd

Ajustei algumas coisas (colokei pra cadastrar o telefone e o código em um banco de dados)…
Depois de cadastrar faço isso:

response.sendRedirect("confirma.html");

Mas antes disso preciso abrir essa url (para enviar a SMS) - SEM O USUÁRIO VER:
http://dominiodele.com.br/Envio/smsacc.pkm?action=api&user=XXXXX&pass=YYYY&conta=ZZZZZ&numeropara=5535XXXXXX&msg=teste+de+msg

drigo.angelo

Não é minha, é de uma empresa, e é um serviço pago…
Só tenho disponível essa URL… Cada vez que é disparada eu pago uma certa quantia…

Voltando a pergunta: Como que faço pra servlet disparar essa url, mas que não seja visualizada pelo usuário?

Se vc estiver se referindo aos parâmetros da requisição,basta mudar o método do form para POST.
Acho que não da pra mandar requisições http com método POST pela url…

barbon

Qual servidor você está utilizando? Ao invés de redirecionar o seu “client” para e retornar a requisição, faça uma interna pelo servidor.

Verifique HttpURLConnection em um Servlet.

ViniMunhoz

Já fiz um agente de envio e eu tinha o mesmo cenario que vc passado pela integradora… utilizei a classe que disseram ai em cima mesmo…
se quiser a noite posso te passar exatamente como fiz…

abraço

pedroroxd

barbon:
Qual servidor você está utilizando? Ao invés de redirecionar o seu “client” para e retornar a requisição, faça uma interna pelo servidor.

Verifique HttpURLConnection em um Servlet.

Consegui, vlw

Criado 25 de janeiro de 2011
Ultima resposta 25 de jan. de 2011
Respostas 8
Participantes 5