5

I am trying to send SMS using the following code:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.Vector;

public class SMS {

    public static void send(String uid, String pwd, String phone, String msg)
            throws Exception {

        if ((uid == null) || (uid.length() == 0)) {
            throw new IllegalArgumentException("User ID should be present.");
        }

        uid = URLEncoder.encode(uid, "UTF-8");

        if ((pwd == null) || (pwd.length() == 0)) {
            throw new IllegalArgumentException("Password should be present.");
        }

    pwd = URLEncoder.encode(pwd, "UTF-8");

        if ((phone == null) || (phone.length() == 0)) {
            throw new IllegalArgumentException(
                    "At least one phone number should be present.");
        }

    if ((msg == null) || (msg.length() == 0)) {
            throw new IllegalArgumentException("SMS message should be present.");
        }

        msg = URLEncoder.encode(msg, "UTF-8");

        Vector<Long> numbers = new Vector<Long>();

        if (phone.indexOf(59) >= 0) {
            String[] pharr = phone.split(";");
            for (String t : pharr)
                try {
                    numbers.add(Long.valueOf(t));
                } catch (NumberFormatException ex) {
                    throw new IllegalArgumentException(
                            "Give proper phone numbers.");
                }
        } else {
            try {
                numbers.add(Long.valueOf(phone));
            } catch (NumberFormatException ex) {
                throw new IllegalArgumentException("Give proper phone numbers.");
            }
        }

        if (numbers.size() == 0) {
            throw new IllegalArgumentException(
                    "At least one proper phone number should be present to send SMS.");
        }
        String temp = "";
        String content = "username=" + uid + "&password=" + pwd;
        URL u = new URL("http://www.way2sms.com/auth.cl");
        HttpURLConnection uc = (HttpURLConnection) u.openConnection();
        uc.setDoOutput(true);
        uc.setRequestProperty(
                "User-Agent",
                "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
        uc.setRequestProperty("Content-Length",
                String.valueOf(content.length()));
        uc.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        uc.setRequestProperty("Accept", "*/*");
        uc.setRequestProperty("Referer", "http://www.way2sms.com//entry.jsp");
        uc.setRequestMethod("POST");
        uc.setInstanceFollowRedirects(false);

        PrintWriter pw = new PrintWriter(new OutputStreamWriter(
                uc.getOutputStream()), true);
        pw.print(content);
        pw.flush();
        pw.close();
        BufferedReader br = new BufferedReader(new InputStreamReader(
                uc.getInputStream()));

        while ((temp = br.readLine()) != null) {
            System.out.println(temp);
        }

        String cookie = uc.getHeaderField("Set-Cookie");

        u = null;
        uc = null;
        for (Iterator<Long> localIterator = numbers.iterator(); localIterator
                .hasNext();) {
            long num = ((Long) localIterator.next()).longValue();

            content = "custid=undefined&HiddenAction=instantsms&Action=custfrom450000&login=&pass=&MobNo="
                    + num + "&textArea=" + msg;
            u = new URL("http://www.way2sms.com/FirstServletsms?custid=");
            uc = (HttpURLConnection) u.openConnection();
            uc.setDoOutput(true);
            uc.setRequestProperty(
                    "User-Agent",
                    "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
            uc.setRequestProperty("Content-Length",
                    String.valueOf(content.getBytes().length));
            uc.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
            uc.setRequestProperty("Accept", "*/*");
            uc.setRequestProperty("Cookie", cookie);
            uc.setRequestMethod("POST");
            uc.setInstanceFollowRedirects(false);
            pw = new PrintWriter(new OutputStreamWriter(uc.getOutputStream()),
                    true);
            pw.print(content);
            pw.flush();
            pw.close();
            br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            while ((temp = br.readLine()) != null)
                ;
            br.close();
            u = null;
            uc = null;
        }

        u = new URL("http://wwwa.way2sms.com/jsp/logout.jsp");
        uc = (HttpURLConnection) u.openConnection();
        uc.setRequestProperty(
                "User-Agent",
                "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5");
        uc.setRequestProperty("Accept", "*/*");
        uc.setRequestProperty("Cookie", cookie);
        uc.setRequestMethod("GET");
        uc.setInstanceFollowRedirects(false);
        br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        while ((temp = br.readLine()) != null)
            ;
        br.close();
        u = null;
        uc = null;
    }

    public static void main(String args[]) throws Exception {
        //SMS s = new SMS();
        SMS.send("9999999999", "password", "8888888888", "Hi How Are u !!");

    }

}

But, when I run this code, I am getting the following error:

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 400 for URL: http://www.way2sms.com/FirstServletsms?custid=XXXXXXXXX
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
    at SMS.send(SMS.java:115)
    at SMS.main(SMS.java:142)
HRgiger
  • 2,750
  • 26
  • 37
Subodh Ranadive
  • 331
  • 1
  • 3
  • 17
  • http://stackoverflow.com/q/9349703. It appears that the most likely cause is that you're sending a malformed URL. Check the URL that you are sending, and make sure that it is correct. – Robert Harvey Sep 24 '14 at 18:15
  • @Robert Hello, Thanks. I checked the url, its correct. Still I am not able send sms. – Subodh Ranadive Sep 25 '14 at 07:34
  • `http://www.way2sms.com/FirstServletsms?custid=` doesn't look like a valid url to me. On top of that it seems that you have forgotten to use `content` in that same piece of code... – Mr Tsjolder from codidact Jun 02 '15 at 06:02

1 Answers1

0

You are not the first one to have the problem, but it seems to be that the URL you are sending, or the data you are sending, is incorrect.

Some suggestions found here :

  • Use Apache Commons HTTP client
  • See whether this couldn't be due to a proxy on your side (try from somewhere else)
  • Try using GET instead of POST
Vic Seedoubleyew
  • 9,888
  • 6
  • 55
  • 76