热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

java实现短信通信的完整教程

这篇文章主要为大家详细介绍了java实现短信通信的完整教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

前言

短信信息的发送目前已经是项目中必不可少的部分,我们怎么通过web页面来实现把信息推送到别人手机上呢?简单点,编码的方式简单点!看完本篇文章,以后要实现短信的发送都只需要知道发什么?发给谁?就OK了,代码如下,是不是很简单^_^

String result= "";//返回状态
Note note = new Note();
String Tel = "17089490559";//接收人手机号
String message = "您好!";//短信内容
result = note.sendNote(Tel,message);//信息发送状态

要实现在页面或控制台输入一些信息再指定一个电话号码就能把信息发送给对方,这对B/S结构的项目来说可是头疼的,但我们能不能把要发送的信息和要发送的电话号码交给一个负责发送短信的服务器,由它来帮我们完成信息的发送呢?答案是肯定的,只是钱的问题…….(毕竟天下没有免费的午餐),明白了这一点,接下来就好办了,我们只要知道服务器在哪,以及怎么联系服务器不就搞定了。所幸的是Apache给我们提供了一个HttpClient 子类,用于帮助我们连接到发送短信的服务器,那发送短信的服务器在哪呢?网上有各种各样的短信服务平台,接下来我们以中国网建为例来讲解短信信息的发送。
首先,你需要注册一个账号,注册完成后系统会为你提供一个用户名和一个密钥(在修改短信密钥里找到)并且提供5条免费短信,对于测试来说足够了,我们需要的就是id和key这两个东西,接下来开始吧!

1、导入相关jar包

相关jar包:

jar包下载:短信通信

2、制作短信小工具

我们希望的是一劳永逸,做一个项目就要导包改各种参数是很费劲的,接下来我们用单例模式来为我们的项目提供信息修改吧,有信息变动我们只需要改配置文件就可以了,代码部分完全不用变。这样我们通过一个note.properties来放配置文件,一个ConfigNoteInfo.java调用配置文件参数的类,以及一个Note.java实现短信的发送的类就实现小工具的制作了,接下来依次教大家配置这三个文件。

第一步,我们在项目里新建一个叫note.properties的文件,里面的参数就两个(这里是放在src根目录下里)。

id=xxx(xxx是你注册的用户名)
key=********(注册成功后平台提供的短信密钥)

第二步,ConfigNoteInfo.java获取配置文件中的id和key

public class ConfigNoteInfo {
 private static ConfigNoteInfo configNoteInfo;
 private static Properties properties;

 private ConfigNoteInfo(){
  //note.properties是你在根目录新建的配置文件
  String cOnfigFile="note.properties";
  properties=new Properties();
  InputStream in=ConfigNoteInfo.class.getClassLoader().getResourceAsStream(configFile);
  try {
   properties.load(in);
   in.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 public static ConfigNoteInfo getInstance(){
  if(cOnfigNoteInfo==null){
   cOnfigNoteInfo= new ConfigNoteInfo();
  }
  return configNoteInfo;
 }
 public String getString(String key){

  return properties.getProperty(key);
 }
}

第三步,Note.java类实现短信信息的发送,基于OOP思想,我们还是把短信发送单独提出来成为一个方法,让以后的工作中只需要传一个手机号和一个消息字符串就能实现短信的发送。(如果是多个手机号可传手机号的数组或List集合)

package cn.hs.tools;

import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.PostMethod;

/***
 * @author HeShuang
 *@Create_date:2017-5-4
 */
public class Note {
 //短信接口,传参(手机号,短信内容)即可发送短信。
 public String sendNode(String Tel,String message) throws HttpException, IOException{
  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");// 在头文件中设置转码,这里为UTF-8 
  NameValuePair[] data = { 
    new NameValuePair("Uid", ConfigNoteInfo.getInstance().getString("id")), // 注册的用户名,我们通过单例模式从配置文件id中读取用户名。
    new NameValuePair("Key",ConfigNoteInfo.getInstance().getString("key")), // 注册成功后,登录网站后得到的密钥 ,同样从配置文件读取。 
    new NameValuePair("smsMob", Tel), // 传递过来的手机号码 
    new NameValuePair("smsText", message) // 传递过来的短信内容 
  };
  post.setRequestBody(data); 
  client.executeMethod(post);

  Header[] headers = post.getResponseHeaders(); 
  int flag = post.getStatusCode(); //返回状态,参照API
  System.out.println("statusCode:" + flag); 
  for (Header h : headers) { 
   System.out.println("---" + h.toString()); 
  } 
  String result = new String(post.getResponseBodyAsString().getBytes( 
    "UTF-8")); 
  System.out.println(result); 

  String info="";
  if(Integer.parseInt(result.trim())>0){
   info="发送成功!";
  }
  switch (result.trim()) {
   case "-1":
    info="用户账号不存在!";
    break;
   case "-2":
    info="接口密钥不正确";
    break;
   case "-3":
    info="尊敬的用户,卖血卖肾,请您先把短信费用缴了!";
    break;
   case "-4":
    info="手机号格式不正确!";
    break;
   case "-6":
    info="IP存在限制!";
    break;
   case "-11":
    info="该用户已被禁用!";
    break;
   case "-14":
    info="短信内容存在非法字符!";
    break;
   default:
    break;
  }
 return info;
 }

}


第四步,在其他地方调用我们的工具类实现短信的发送。

String result= "";//返回状态
Note note = new Note();
String Tel = "17089490559";//要发送的手机号
String message = "您好!";//要发送的短信信息
result = note.sendNote();//获取信息发送状态

就此,java实现短信信息的发送功能就完成了,并且我们还把它做成了一个小工具类,信息有变更时,只需要改配置文件就行了,一次编写,处处复制。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • 本文详细介绍了如何在 MySQL 中授予和撤销用户权限。包括创建用户、赋予不同级别的权限(如表级、数据库级、服务器级)、使权限生效、查看用户权限以及撤销权限的方法。此外,还提供了常见错误及其解决方法。 ... [详细]
  • 本文详细介绍了如何检查和配置电脑上的PHP环境,包括位数、运行支持以及文件格式的打开方式。适合初学者了解PHP的基础知识和操作方法。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • Hybrid 应用的后台接口与管理界面优化
    本文探讨了如何通过优化 Hybrid 应用的后台接口和管理界面,提升用户体验。特别是在首次加载 H5 页面时,为了减少用户等待时间和流量消耗,介绍了离线资源包的管理和分发机制。 ... [详细]
  • 本文详细介绍了在iPhone上设置和配置邮件账户的步骤,包括基础设置、服务器端口调整以及其他个性化选项,帮助用户顺利完成邮件账户的配置。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 本文探讨了如何在Hive(基于Hadoop)环境中编写类似SQL的语句,以去除字段中的空格。特别是在处理邮政编码等数据时,去除特定位置的空格是常见的需求。 ... [详细]
  • 本文详细介绍如何使用 Apache Spark 执行基本任务,包括启动 Spark Shell、运行示例程序以及编写简单的 WordCount 程序。同时提供了参数配置的注意事项和优化建议。 ... [详细]
  • Logback使用小结
    1一定要使用slf4j的jar包,不要使用apachecommons的jar。否则滚动生成文件不生效,不滚动的时候却生效~~importorg.slf ... [详细]
author-avatar
DreamFly72
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有