Envio de sms. To quase Conseguindo. ajudem!

3 respostas
D

Conheci esses dias um cara que fez o Ichat (www.ichat.cjb.net), programa que entra no chat do terra. Feito em VB, é bem legal.
Mas o que me chamou a atenção foi que o enviador de mensagens sms.
Porra, como ele consegue mandar, pensei?
Ai, perguntei pra ele!
O cara disse que fez um proxy e verificou o que o browser envia e o que recebe qdo preenchemos o form no site da operadora de celular pra enviar um sms.

Ai ele fez uma sub usando Winsock, que envia esses paramentros pro site da operadora, como se fosse o browser!

Essa é a Sub em VB: ----------------------------------------
Private Sub wskEnviar_Connect() 
    wskEnviar.Tag = vbNullString 
    Dim Post As String, Page As String, Referer As String 
    Select Case cmbOperadora.ListIndex 
        Case 1: 'Claro 
            Post = "pre1=" & Val(cmbDDD.Text) & "&min=" & Val(txtCel.Text) & "&sender=" & CHtml(txtNome.Text) & "&msg=" & CHtml(txtMsg.Text) & "&callback=&totalCounter=" & 150 - Len(txtMsg.Text) + Len(txtNome.Text) & "&janela=Sim" 
            Page = "/submitsms.asp" 
            Referer = "http://www.claro.com.br/" 
            Cookie = vbNullString 
        Case 2: 'Telefônica 
            Post = "prefixo=" & Val(cmbDDD.Text) & "&celular=" & Val(txtCel.Text) & "&remetente=" & CHtml(txtNome.Text) & "&contato=&mensagem=" & CHtml(txtMsg.Text) & "&conteudo=" & CHtml(txtNome.Text) & ": " & CHtml(txtMsg.Text) & "&resposta=capa" 
            Page = "/aviso_mensagem.asp" 
            Referer = "http://www.telefonicacelular-rs.net.br/" 
            Cookie = vbNullString 
        Case 3: 'Tim 
            Post = "SMS_DDD=" & Val(cmbDDD.Text) & "&SMS_Telefone=" & Val(txtCel.Text) & IIf(Len(txtNome.Text) <> 0, "&incluirRemet=on&SMS_NomeRemet=" & CHtml(txtNome.Text), "") & "&urlfrom=%2Fservicos%2Fpessoais_torpedo_enviar.asp&PreMessage=" & CHtml(txtMsg.Text) & "&charRestantes=" & 156 - Len(txtMsg.Text) + Len(txtNome.Text) 
            Page = "/servicos/pessoais_torpedo_enviarSMS.asp" 
            Referer = "http://www.timbrasil.com.br/servicos/pessoais_torpedo_enviar.asp" 
    End Select 
    Dim Enviar As String 
    Enviar = "POST " & Page & " HTTP/1.0" & vbCrLf & _ 
                   "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/msword, application/x-shockwave-flash, */*" & vbCrLf & _ 
                   "Referer: " & Referer & vbCrLf & _ 
                   "Accept-Language: pt-br" & vbCrLf & _ 
                   "Content-Type: application/x-www-form-urlencoded" & vbCrLf & _ 
                   "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)" & vbCrLf & _ 
                   "Host: " & wskEnviar.RemoteHost & vbCrLf & _ 
                   "Content-Length: " & Len(Post) & vbCrLf & _ 
                   "Pragma: no-cache" & vbCrLf 
    If Len(Cookie) <> 0 Then Enviar = Enviar & "Cookie: " & Cookie & vbCrLf 
    Enviar = Enviar & vbCrLf & Post 
    wskEnviar.SendData Enviar 
End Sub 
Private Sub wskEnviar_DataArrival(ByVal bytesTotal As Long) 
    If bytesTotal <> 0 Then 
        Dim RD As String 
        wskEnviar.GetData RD 
        wskEnviar.Tag = wskEnviar.Tag & RD 
    End If 
End Sub 
Private Sub wskEnviar_Close() 
    wskEnviar.Close 
    Dim Enviada As Boolean 
    Select Case cmbOperadora.ListIndex 
        Case 1: Enviada = InStr(wskEnviar.Tag, "Location: janela_nova.asp") <> 0 
        Case 2: Enviada = InStr(wskEnviar.Tag, "Location: default.asp") <> 0 
        Case 3: Enviada = InStr(wskEnviar.Tag, "Location: http://www.timbrasil.com.br/servicos/pessoais_Torpedo_statusFinal.asp?status=1") <> 0 
    End Select 
    wskEnviar.Tag = vbNullString 
    If Enviada Then MsgBox "A mensagem foi enviada!", vbInformation Else MsgBox "Erro ao enviar a mensagem.", vbCritical 
End Sub
E esse é o Servlet que tentei fazer usando Sockets. Estou tentando enviar pra uma operadora por enquanto. Mas nao esta funcionado, alguém pode me ajudar? --------------------------------------------------------------
package servlets.smsSender; 

import java.io.*; 
import java.net.*;
import javax.servlet.*; 
import javax.servlet.http.*;
import java.sql.*;
import java.util.*;


public class smsSender extends HttpServlet{

	public void smsSend(){
    SendClaro();
    }


 public void SendClaro(){
 
 try {
        	
		// data
		String data = URLEncoder.encode("pre1", "UTF-8") + "=" + URLEncoder.encode("51", "UTF-8");
        data += "&" + URLEncoder.encode("min", "UTF-8") + "=" + URLEncoder.encode("92173454", "UTF-8");
        data += "&" + URLEncoder.encode("sender", "UTF-8") + "=" + URLEncoder.encode("Daniel", "UTF-8");
        data += "&" + URLEncoder.encode("msg", "UTF-8") + "=" + URLEncoder.encode("teste", "UTF-8");
        data += "&" + URLEncoder.encode("callback", "UTF-8") + "=" + URLEncoder.encode("91452578", "UTF-8");
        data += "&" + URLEncoder.encode("totalCounter", "UTF-8") + "=" + URLEncoder.encode("135", "UTF-8");
        data += "&" + URLEncoder.encode("janela", "UTF-8") + "=" + URLEncoder.encode("Sim", "UTF-8");    
        
		//  header
        String header = URLEncoder.encode("POST /submitsms.asp HTTP/1.0
", "UTF-8"); 
		header += URLEncoder.encode("Content-Length: "+ data.length()+"
", "UTF-8");
		header += URLEncoder.encode("Content-Type: application/x-www-form-urlencoded
"); 
		header += URLEncoder.encode("Referer: http://www.claro.com.br/"); 
		header += URLEncoder.encode("Connection: Keep-Alive"); 
		header += URLEncoder.encode("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; DigExt)"); 
		header += URLEncoder.encode("Host: www.claro.com.br"); 
		header += URLEncoder.encode("Pragma: no-cache"); 
		header += URLEncoder.encode("
", "UTF-8");

        // Create a socket to the host
        String hostname = "http://www.claroonline.com.br/";
        int port = 80;
        InetAddress addr = InetAddress.getByName(hostname);
        Socket socket = new Socket(addr, port);
		BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));

        wr.write(header + data);
        wr.flush();
    
        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            // Process line...
			System.out.println("Retorno da claro: "+ line);
        }
        wr.close();
        rd.close();
    } catch (Exception e) {
		System.out.println("Erro, entrou no Catch: "+ e);
    }


    }

}

3 Respostas

Leandro

Tenta colocar o código DDD na frente… (Ex. [telefone removido])…

Cara!! Se funcionar coloca o código aqui, avisa, grita, faz sinal de fumaça… me interessei… :slight_smile:
Vou dar umas pesquisadas também… hehehe

Leandro

Aproveitando o assunto… eu to tentando ver o que eu consigo daqui mas eu uso net por Proxy…
Alguém sabe como setar o Proxy no Java??
Eu lembro que isso já apareceu por aqui mas eu num achei… se não me engano era alguma coisa do System… mas num acho!!!

Como eu seto o proxy pra acesso a internet no Java???
Valeus!! :smiley:

cv1

Esse topic tá meio velho já (3 semanas de vida :D), mas eu resolvi postar anyway:

www.telme.com.br :slight_smile:

Criado 10 de abril de 2003
Ultima resposta 2 de jun. de 2003
Respostas 3
Participantes 3