Java调用第三方平台发送手机短信

1.第三方短信平台API
使用Java发送手机短信,一般要通过第三方的短信平台完成,所以我们可以先选择一家短信平台,注册用户。这里我们选择中国建网完成短信发送。
1.先到中国网建(http://sms.webchinese.cn/default.shtml)注册用户,可以获得5条免费短信用于测试,用完了可以继续充值或者打电话申请多几条免费短信(请说明是用于开发测试)。
2.注册的用户会获得一个密钥,编程时候要用以标识身份。登录后点击“修改短信密钥”可以看到密钥。
3.做了这些准备工作,如何发送短信呢,短信平台会提供调用方式,在首页点击“短信API接口”,我们可以查看API说明,实际上是通过表单提交的请求来说明各种参数的。
2.具体实现步骤
(1)准备所需要的jar包

<!-- commons-logging.jar -->
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.2</version>
	</dependency>
	<!-- commons-httpclient.jar -->
	<dependency>
		<groupId>commons-httpclient</groupId>
		<artifactId>commons-httpclient</artifactId>
		<version>3.1</version>
	</dependency>
	<!-- commons-codec.jar -->
	<dependency>
		<groupId>commons-codec</groupId>
		<artifactId>commons-codec</artifactId>
		<version>1.10</version>
	</dependency>

(2)封装SmsSender工具类
使用到“commons-httpclient.jar”用来向第三方平台发送POST请求。

public class SmsSender {
	public int sendSms(String phoneNr, String message) throws HttpException, IOException {
		//使用commons-httpclient向第三方平台包发送POST请求
		HttpClient client = new HttpClient();
		PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn");
		post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");
		NameValuePair[] data = { 
				new NameValuePair("Uid", "xxxxxxxxxx"), 		 	//注册用户名,请修改
				new NameValuePair("Key", "xxxxxxxxxx"), 			//密钥,请求修改
				new NameValuePair("smsMob", phoneNr), 				//手机号码
				new NameValuePair("smsText", message) };			//短信内容
		post.setRequestBody(data);
		client.executeMethod(post);					//发送请求
		int statusCode = post.getStatusCode();
		System.out.println("statusCode:" + statusCode);
		if(statusCode!=200){
			throw new RuntimeException("短信平台发送不成功,状态吗:"+statusCode);
		}
		//返回的短信发送状态信息,含义详见中国网建的API说明
		String result = new String(post.getResponseBodyAsString().getBytes("utf-8"));
		System.out.println(result); // 打印返回消息状态
		return Integer.parseInt(result);
	}
}

(3)制作一个简单界面测试短信发送
JSP页面:

<h3>短信发送测试</h3>
	<form action="sms" method="post">
	手机号码:<input name="phoneNr" /><br/>
	短信消息:<input name="message" /> <button>发送</button>
	</form>
	<label style="color:red">${error}</label>
Servlet部分:
@WebServlet("/sms")
public class SmsServlet extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String phoneNr = req.getParameter("phoneNr");
		String message = req.getParameter("message");
		SmsSender smsSender = new SmsSender();
		int code = smsSender.sendSms(phoneNr, message);
		if(code == 1){
			resp.sendRedirect(req.getContextPath()+"/success.jsp");
		}else{
			req.setAttribute("error", "短信发送不成功,错误编号:"+code);
			req.getRequestDispatcher("test.jsp").forward(req, resp);
		}
	}
}

运行效果如下图所示。
Java调用第三方平台发送手机短信_第1张图片
在这里插入图片描述

你可能感兴趣的:(Java调用第三方平台发送手机短信)