SMS gateway usage example for Java

    Class API.java:

    package sms.api.v2; import java.util.ArrayList; import java.util.Map; public class API { private sms.api.v2.RequestBuilder reqBuilder; private String login; private String password; public API(sms.api.v2.RequestBuilder reqBuilder,String login, String password) { this.reqBuilder = reqBuilder; this.login=login; this.password=password; } public String getStatus(String msgId){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS><operations><operation>GETSTATUS</operation></operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<statistics>"); request=request.concat("<messageid>"+msgId+"</messageid>"); request=request.concat("</statistics>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String getPrice(String text, Map<String, String> phones){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations> "); request=request.concat("<operation>GETPRICE</operation>"); request=request.concat("</operations> "); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<message>"); request=request.concat("<sender>SMS</sender>"); request=request.concat("<text>"+text+"</text>"); request=request.concat("</message>"); request=request.concat("<numbers>"); for (Map.Entry entry : phones.entrySet()) { request=request.concat("<number messageID=\""+entry.getKey()+"\">"+entry.getValue()+"</number>"); } request=request.concat("</numbers>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String getBalance(){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations>"); request=request.concat("<operation>BALANCE</operation>"); request=request.concat("</operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification> "); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } public String sendSms(String sender, String text, ArrayList<Phones> phones){ String request="<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; request=request.concat("<SMS>"); request=request.concat("<operations>"); request=request.concat("<operation>SEND</operation>"); request=request.concat("</operations>"); request=request.concat("<authentification>"); request=request.concat("<username>"+this.login+"</username>"); request=request.concat("<password>"+this.password+"</password>"); request=request.concat("</authentification>"); request=request.concat("<message>"); request=request.concat("<sender>"+sender+"</sender>"); request=request.concat("<text>"+text+"</text>"); request=request.concat("</message>"); request=request.concat("<numbers>"); for (Phones phone : phones) { request=request.concat("<number"); if(phone.getIdMessage().length()>0) request=request.concat(" messageID=\""+phone.getIdMessage()+"\""); if(phone.getVariable().length()>0) request=request.concat(" variables=\""+phone.getVariable()+"\""); request=request.concat(">"); request=request.concat(phone.getPhone()); request=request.concat("</number>"); } request=request.concat("</numbers>"); request=request.concat("</SMS>"); return this.reqBuilder.doXMLQuery(request); } }

    Class Connector.java

    package sms.api.v2; import java.io.IOException; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; public class Connector { private static HttpURLConnection httpConn; private String URL; public Connector(String URL) { this.URL = URL; } /** * Makes an HTTP request using POST method to the specified URL. * @param params A map containing POST data in form of key-value pairs * @return An HttpURLConnection object * @throws IOException thrown if any I/O error occurred */ public static HttpURLConnection sendPostRequest(String requestURL, Map<String, String> params) throws IOException { URL url = new URL(requestURL); httpConn = (HttpURLConnection) url.openConnection(); httpConn.setUseCaches(false); httpConn.setDoInput(true); // true indicates the server returns response StringBuffer requestParams = new StringBuffer(); if (params != null && params.size() > 0) { httpConn.setDoOutput(true); // true indicates POST request Iterator<String> paramIterator = params.keySet().iterator(); boolean isFirst=true; while (paramIterator.hasNext()) { String key = paramIterator.next(); String value = params.get(key); if(!isFirst){ requestParams.append("&");} requestParams.append(key); requestParams.append("=").append(URLEncoder.encode(value,"UTF-8")); isFirst=false; } // sends POST data OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream()); //URLEncoder.encode(requestParams.toString(),"UTF-8") writer.write(requestParams.toString()); writer.flush(); } return httpConn; } /** * Returns only one line from the server's response. This method should be * used if the server returns only a single line of String. * * @return a String of the server's response * @throws IOException thrown if any I/O error occurred */ public static String readSingleLineRespone() throws IOException { InputStream inputStream = null; if (httpConn != null) { inputStream = httpConn.getInputStream(); } else { throw new IOException("Connection is not established."); } BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); String response = reader.readLine(); reader.close(); return response; } /** * Returns an array of lines from the server's response. This method should * be used if the server returns multiple lines of String. * * @return an array of Strings of the server's response * @throws IOException thrown if any I/O error occurred */ public static String[] readMultipleLinesRespone() throws IOException { InputStream inputStream = null; if (httpConn != null) { inputStream = httpConn.getInputStream(); } else { throw new IOException("Connection is not established."); } BufferedReader reader = new BufferedReader(new InputStreamReader( inputStream)); List<String> response = new ArrayList<String>(); String line = ""; while ((line = reader.readLine()) != null) { response.add(line); } reader.close(); return (String[]) response.toArray(new String[0]); } /** * Closes the connection if opened */ public static void disconnect() { if (httpConn != null) { httpConn.disconnect(); } } }

    Class Phones.java:

    package sms.api.v2; public class Phones { public String idMessage; public String varaibles; public String phone; public Phones(String idMessage,String variables,String phone){ this.phone=phone; this.varaibles=variables; this.idMessage=idMessage; } public String getIdMessage(){ return this.idMessage; } public String getVariable(){ return this.varaibles; } public String getPhone(){ return this.phone; } }

    Class RequestVuilder.java

    package sms.api.v2; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class RequestBuilder { String URL; public RequestBuilder(String URL) { this.URL = URL; } public String doXMLQuery(String xml) { StringBuilder responseString = new StringBuilder(); Map params=new HashMap(); params.put("XML", xml); try { Connector.sendPostRequest(this.URL, params); String[] response = Connector.readMultipleLinesRespone(); for (String line : response) { responseString.append(line); } } catch (IOException ex) { ex.printStackTrace(); } Connector.disconnect(); return responseString.toString(); } }

    Usage example

    package sms.api.v2; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; public class Test { public static void main(String[] args) { String URL = "http://api.atompark.com/members/sms/xml.php"; String login="YOUR_LOGIN"; String password="YOUR_PASSWORD"; RequestBuilder Request= new RequestBuilder(URL); API ApiSms=new API(Request, login, password); //GET STATUS ************************************************************* System.out.print(ApiSms.getStatus("1299")); /* * response: <?xml version="1.0" encoding="UTF-8"?> <deliveryreport><message id="1299" sentdate="0000-00-00 00:00:00" donedate="0000-00-00 00:00:00" status="0" /></deliveryreport> */ //GET PRICE ************************************************************* Map<String, String> phones = new HashMap(); phones.put("id1", "+38063169****"); phones.put("id2", "+38093101****"); System.out.print(ApiSms.getPrice("Test sms",phones)); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>0</status><credits>0.682</credits></RESPONSE> */ //GET BALANCE ************************************************************* System.out.print(ApiSms.getBalance()); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>0</status><credits>780.64</credits></RESPONSE> */ //SEND PHONE ************************************************************* ArrayList<Phones> phoneSend=new ArrayList<Phones>(); phoneSend.add(new Phones("id1","","+38063169****")); phoneSend.add(new Phones("id2","","+38093101****")); System.out.print(ApiSms.sendSms("test", "test sms", phoneSend)); /* * response: <?xml version="1.0" encoding="UTF-8"?><RESPONSE><status>2</status><credits>0.682</credits></RESPONSE> */ } }

    Sing up and start sending SMS

    Get 10 free SMS to test our service!
    Get Started

    Top up account and start sending SMS from your Member Area right now

    Top up account