突发奇想,Java可不可以实现模拟手机发送短信的功能,于是Google了一下相关内容,借此把整个过程记录下来,说不定你也感兴趣呢?
准备工作
- 登陆网站 :SMS短信通-注册,注册一个账号。
- 登陆进入该页面。登陆页面:
- 如图点击:修改短信密钥
说明:在1处添上自定义的密钥(我设置成了32位),点击保存。在2处签名处,我的建议是不填写,为了之后的短信签名是灵活的。
编写代码
使用开发工具Eclipse,或者其他的IDE,建立一个Dynamic Web Project工程,创建一个Java类,main方法如下所示:(代码可以直接复制,自行修改),之后Run As编写的Java类即可。
- 引入三个JAR包:
- 图中被涂抹的,在代码中都有说明
- 需要注意的是<短信内容>的最后需要加上签名。格式必须是:【XXX】,例如【Mini_Goooo】
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓代码如下↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
public static void main(String[] args) throws HttpException, IOException {
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.api.smschinese.cn");
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码
NameValuePair[] data = { new NameValuePair("Uid", "注册的用户名"),// 注册的用户名
new NameValuePair("Key", "自定义的短信密钥"),// 注册成功后,登录网站后得到的密钥
new NameValuePair("smsMob", "181XXXXXXXX"),// 接收人的手机号码 new NameValuePair("smsText", "这是一条使用Java代码发送出去的短信!") };// 短信内容
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
int statusCode = post.getStatusCode(); System.out.println("statusCode:"+statusCode);
for(Header h : headers)
{System.out.println(h.toString()); }
String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
System.out.println(result); //打印返回消息状态
post.releaseConnection();
}
结果测试
涂抹的内容就是你短信内容最后填写的签名内容。--这个必须有!!
感谢小红同学的友情支持!