Difference between revisions of "Java Sending SMS via SOAP"

From SMS Wiki
Jump to: navigation, search
Line 28: Line 28:
 
</source>
 
</source>
  
 +
If you are sending URL in the text of your message please note that special characters like "-", "+", "/" and others MUST be replaced with their safe equivalents (for example %2f).
  
 
A complete "Main" style application would look like:
 
A complete "Main" style application would look like:

Revision as of 12:32, 3 March 2008

Source code for this project can be found here

The process of sending an SMS using Java is fairly straightforward.

The easiest setup is to use Eclipse with the XFire plugin. XFire is an opensource Java SOAP interface http://xfire.codehaus.org/

  • Once you have the plugin installed, add the XFire nature to your project by right clicking on the project and selecting "Add XFire Nature"
  • Then, again, right click on the project and specify "New > Other...". At the bottom of the list should be an option labeled "Code generation from WSDL Document". Select this option and enter the following into the dialog presented:
WSDL: http://api.upsidewireless.com/soap/Authentication.asmx?WSDL
Output Directory: <Your source directory>
Package: <Leave Blank> (By leaving this field blank, the default package of the service will be used)
Click Finish and it will build the necessary source files. Repeat the process for: http://api.upsidewireless.com/soap/SMS.asmx?WSDL
  • Now that you have both sets of XFire client code generated (one for authentication and the other for sending SMS), now it is time to make a call. The essence of making the call is the following 3 lines of code (it can be reduce down to a single line of code, but that would make debugging difficult):
SMSClient client = new SMSClient();
SMSSoap soap = client.getSMSSoap();
soap.send_Plain(token, signature, "+15557779999", "Hello", SmsEncoding.SEVEN);


Here is the one liner:

new SMSClient().getSMSSoap().send_Plain(token, signature, "+15557779999", "Hello", SmsEncoding.SEVEN);

If you are sending URL in the text of your message please note that special characters like "-", "+", "/" and others MUST be replaced with their safe equivalents (for example %2f).

A complete "Main" style application would look like:

import org.codehaus.xfire.XFireRuntimeException;
 
import com.upsidewireless.webservice.authentication.AuthenticationClient;
import com.upsidewireless.webservice.authentication.AuthenticationParameters;
import com.upsidewireless.webservice.authentication.AuthenticationSoap;
import com.upsidewireless.webservice.sms.SMSClient;
import com.upsidewireless.webservice.sms.SMSSoap;
import com.upsidewireless.webservice.sms.SmsEncoding;
 
/**
 * @author cjensen
 * 
 */
public class SendSms {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
 
		/***********************************************************************
		 * Execute the retrieval of the token and signature only once.
		 * Preferably from the web interface and store them as Constants
		 **********************************************************************/
 
		AuthenticationClient authclient = new AuthenticationClient();
		AuthenticationSoap authsoap = authclient.getAuthenticationSoap();
 
		AuthenticationParameters authparams = authsoap.getParameters("YourUserName", "YourPassword");
		String token = authparams.getToken();
		String signature = authparams.getSignature();
 
		/***********************************************************************
		 * We now have the credentials, now build a SOAP client and make the
		 * call.
		 **********************************************************************/
 
		SMSClient client = new SMSClient();
		SMSSoap soap = client.getSMSSoap();
		soap.send_Plain(token, signature, "+15557779999", "Hello", SmsEncoding.SEVEN);
 
	}
 
}