Techno

Java Way2SMS desktop application source

Apr 20th, 2012
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.76 KB | None | 0 0
  1. // Author: Manish Raj
  2. // Homepage: http://www.technoslab.in
  3. // Contact: technoslab[@gmail.com]
  4.  
  5. public class application extends javax.swing.JFrame {
  6.  
  7.     public application() {
  8.         initComponents();
  9.     }
  10.  
  11.     public boolean send(String username, String password, String number, String message) {
  12.         statusField.setText("Status: Attempting login...");
  13.         String loginResult = sendPost("http://site1.way2sms.com/Login1.action", "http://site1.way2sms.com/content/index.html", "username=" + username + "&password=" + password, "");
  14.         if (loginResult.indexOf("Main.action") > 0) {
  15.             statusField.setText("Status: Logged in");
  16.             String url = inbetween(loginResult, "Location: ", "\r\n");
  17.             String cookie = inbetween(loginResult, "Set-Cookie: ", "\r\n");
  18.             String instantResult = sendPost("http://site1.way2sms.com/jsp/InstantSMS.jsp", "", "", cookie);
  19.             statusField.setText("Status: Retrieving instantSMS form...");
  20.             String action = inbetween(instantResult, "<input type=\"hidden\" name=\"Action\" id=\"Action\" value=\"", "\"");
  21.             if (url.equals("") || cookie.equals("") || action.equals("")) {
  22.                 return false;
  23.             } else {
  24.                 String sendResult = sendPost("http://site1.way2sms.com/quicksms.action", "http://site1.way2sms.com/jsp/InstantSMS.jsp", "action=" + action + "&HiddenAction=instantsms&catnamedis=Birthday&login=&pass=&MobNo=" + number + "&textArea=" + message, cookie);
  25.                 if (sendResult.indexOf("submitted successfully") > 0) {
  26.                 statusField.setText("Status: Sending message...");
  27.                     return true;
  28.                 } else {
  29.                     return false;
  30.                 }
  31.             }
  32.         } else {
  33.             return false;
  34.         }
  35.     }
  36.  
  37.     public String inbetween(String str, String start, String end) {
  38.         String ret = "";
  39.         try {
  40.             ret = str.substring(str.indexOf(start) + start.length(),
  41.                     str.indexOf(end, str.indexOf(start) + start.length()));
  42.         } catch (Exception e) {
  43.         }
  44.         return ret;
  45.  
  46.     }
  47.  
  48.     public String sendPost(String link, String ref, String post, String cookie) {
  49.         StringBuilder sb = new StringBuilder("");
  50.  
  51.         try {
  52.             java.net.URL url = new java.net.URL(link);
  53.             String nl = "\r\n";
  54.             String request = ""
  55.                     + "POST " + url.getPath() + " HTTP/1.1" + nl
  56.                     + "Host: " + url.getHost() + nl
  57.                     + "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" + nl
  58.                     + "Cache-Control: max-age=0" + nl
  59.                     + "Connection: Close" + nl
  60.                     + "Keep-Alive: 300" + nl
  61.                     + "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" + nl
  62.                     + "Accept-Language: en-us,en;q=0.5" + nl
  63.                     + "Referer: " + ref + nl
  64.                     + "Content-Type: application/x-www-form-urlencoded" + nl
  65.                     + "Content-Length: " + post.length() + nl
  66.                     + "Cookie: " + cookie + nl
  67.                     + "User-Agent: Mozilla/5.0 (Windows;U;Windows NT 5.0;en-US;rv:1.4) Gecko/20030624 Netscape/7.1 (ax)" + nl + nl
  68.                     + post;
  69.             //System.out.println(request);
  70.             java.net.Socket remoteConnection = new java.net.Socket(url.getHost(), 80);
  71.             java.io.OutputStream remoteOutputStream = remoteConnection.getOutputStream();
  72.             java.io.InputStream remoteInputStream = remoteConnection.getInputStream();
  73.             remoteOutputStream.write(request.getBytes());
  74.             remoteOutputStream.flush();
  75.  
  76.             int inputChar = -1;
  77.  
  78.             while ((inputChar = remoteInputStream.read()) != -1) {
  79.                 sb.append((char) inputChar);
  80.             }
  81.  
  82.         } catch (Exception e) {
  83.             e.printStackTrace();
  84.         }
  85.         return sb.toString();
  86.     }
  87.  
  88.     @SuppressWarnings("unchecked")
  89.  
  90.     private void initComponents() {
  91.  
  92.         usernameField = new javax.swing.JTextField();
  93.         numberField = new javax.swing.JTextField();
  94.         jScrollPane1 = new javax.swing.JScrollPane();
  95.         messageBox = new javax.swing.JTextArea();
  96.         jLabel1 = new javax.swing.JLabel();
  97.         jLabel2 = new javax.swing.JLabel();
  98.         sendButton = new javax.swing.JButton();
  99.         lengthField = new javax.swing.JTextField();
  100.         jLabel3 = new javax.swing.JLabel();
  101.         registerLink = new javax.swing.JLabel();
  102.         passwordField = new javax.swing.JPasswordField();
  103.         statusField = new javax.swing.JLabel();
  104.  
  105.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  106.         setTitle("Way2SMS desktop App by www.technoslab.in");
  107.         setResizable(false);
  108.  
  109.         messageBox.setColumns(20);
  110.         messageBox.setLineWrap(true);
  111.         messageBox.setRows(5);
  112.         messageBox.addKeyListener(new java.awt.event.KeyAdapter() {
  113.             public void keyTyped(java.awt.event.KeyEvent evt) {
  114.                 messageBoxKeyTyped(evt);
  115.             }
  116.         });
  117.         jScrollPane1.setViewportView(messageBox);
  118.  
  119.         jLabel1.setText("Username / Mobile number");
  120.  
  121.         jLabel2.setText("Password");
  122.  
  123.         sendButton.setText("Send");
  124.         sendButton.addActionListener(new java.awt.event.ActionListener() {
  125.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  126.                 sendButtonActionPerformed(evt);
  127.             }
  128.         });
  129.  
  130.         lengthField.setText(" 0");
  131.  
  132.         jLabel3.setText("+91");
  133.  
  134.         registerLink.setText("<html><a href=\"http://way2sms.com\">Don't have an account yet?</a>");
  135.         registerLink.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
  136.         registerLink.addMouseListener(new java.awt.event.MouseAdapter() {
  137.             public void mouseClicked(java.awt.event.MouseEvent evt) {
  138.                 registerLinkMouseClicked(evt);
  139.             }
  140.         });
  141.  
  142.         statusField.setText("Status: IDLE...");
  143.  
  144.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  145.         getContentPane().setLayout(layout);
  146.         layout.setHorizontalGroup(
  147.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  148.             .addGroup(layout.createSequentialGroup()
  149.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  150.                     .addGroup(layout.createSequentialGroup()
  151.                         .addGap(8, 8, 8)
  152.                         .addComponent(jLabel3)
  153.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  154.                         .addComponent(numberField, javax.swing.GroupLayout.DEFAULT_SIZE, 164, Short.MAX_VALUE)
  155.                         .addGap(147, 147, 147)
  156.                         .addComponent(lengthField, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
  157.                     .addGroup(layout.createSequentialGroup()
  158.                         .addContainerGap()
  159.                         .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  160.                             .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
  161.                             .addGroup(layout.createSequentialGroup()
  162.                                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  163.                                     .addComponent(jLabel1)
  164.                                     .addComponent(jLabel2))
  165.                                 .addGap(77, 77, 77)
  166.                                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
  167.                                     .addComponent(usernameField, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)
  168.                                     .addComponent(passwordField, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)))
  169.                             .addGroup(layout.createSequentialGroup()
  170.                                 .addComponent(statusField, javax.swing.GroupLayout.DEFAULT_SIZE, 292, Short.MAX_VALUE)
  171.                                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  172.                                 .addComponent(sendButton))))
  173.                     .addGroup(layout.createSequentialGroup()
  174.                         .addContainerGap()
  175.                         .addComponent(registerLink, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  176.                 .addContainerGap())
  177.         );
  178.         layout.setVerticalGroup(
  179.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  180.             .addGroup(layout.createSequentialGroup()
  181.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  182.                     .addGroup(layout.createSequentialGroup()
  183.                         .addGap(12, 12, 12)
  184.                         .addComponent(jLabel1)
  185.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  186.                         .addComponent(jLabel2))
  187.                     .addGroup(layout.createSequentialGroup()
  188.                         .addContainerGap()
  189.                         .addComponent(usernameField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  190.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  191.                         .addComponent(passwordField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
  192.                 .addGap(23, 23, 23)
  193.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  194.                     .addComponent(numberField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  195.                     .addComponent(jLabel3)
  196.                     .addComponent(lengthField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
  197.                 .addGap(18, 18, 18)
  198.                 .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  199.                 .addGap(14, 14, 14)
  200.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  201.                     .addComponent(sendButton)
  202.                     .addComponent(statusField))
  203.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  204.                 .addComponent(registerLink, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  205.                 .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  206.         );
  207.  
  208.         pack();
  209.     }
  210.  
  211.     private void registerLinkMouseClicked(java.awt.event.MouseEvent evt) {
  212.         try {
  213.             java.awt.Desktop.getDesktop().browse(new java.net.URI("http://way2sms.com/"));
  214.         } catch (Exception e) {
  215.         }
  216.     }
  217.  
  218.     private void messageBoxKeyTyped(java.awt.event.KeyEvent evt) {
  219.    
  220.         if (messageBox.getText().length() > 160) {
  221.             messageBox.setText(messageBox.getText().substring(0, 160));
  222.         }
  223.         lengthField.setText(" " + messageBox.getText().length());
  224.  
  225.     }
  226.    
  227.     private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {
  228.  
  229.         char[] p = passwordField.getPassword();
  230.         StringBuilder pw = new StringBuilder();
  231.         for (int i = 0; i < p.length; i++) {
  232.             pw.append(p[i]);
  233.         }
  234.         boolean result = send(usernameField.getText(), pw.toString(), numberField.getText(), messageBox.getText());
  235.         if (result) {
  236.                     statusField.setText("Status: Message sent successfully...");
  237.         } else {
  238.             statusField.setText("Status: Sending failed...");
  239.         }
  240.  
  241.     }
  242.  
  243.     public static void main(String args[]) {
  244.  
  245.         try {
  246.             javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
  247.         } catch (ClassNotFoundException ex) {
  248.             java.util.logging.Logger.getLogger(application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  249.         } catch (InstantiationException ex) {
  250.             java.util.logging.Logger.getLogger(application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  251.         } catch (IllegalAccessException ex) {
  252.             java.util.logging.Logger.getLogger(application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  253.         } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  254.             java.util.logging.Logger.getLogger(application.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  255.         }
  256.  
  257.         java.awt.EventQueue.invokeLater(new Runnable() {
  258.  
  259.             public void run() {
  260.                 new application().setVisible(true);
  261.             }
  262.         });
  263.     }
  264.  
  265.     private javax.swing.JLabel jLabel1;
  266.     private javax.swing.JLabel jLabel2;
  267.     private javax.swing.JLabel jLabel3;
  268.     private javax.swing.JScrollPane jScrollPane1;
  269.     private javax.swing.JTextField lengthField;
  270.     private javax.swing.JTextArea messageBox;
  271.     private javax.swing.JTextField numberField;
  272.     private javax.swing.JPasswordField passwordField;
  273.     private javax.swing.JLabel registerLink;
  274.     private javax.swing.JButton sendButton;
  275.     private javax.swing.JLabel statusField;
  276.     private javax.swing.JTextField usernameField;
  277. }
Advertisement
Add Comment
Please, Sign In to add comment