java发动短信需要什么包 java如何实现发送短信验证码功能
大家好,关于java发动短信需要什么包很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于java如何实现发送短信验证码功能的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
java如何实现发送短信验证码功能
1、创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法
/***文件说明*@Description:扩展说明*@Copyright: XXXX dreamtech.com.cn Inc. All right reserved*@Version: V6.0*/package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod;/***@Author: feizi*@Date: XXXX年XX月XX日 XX:XX:XX*@ModifyUser: feizi*@ModifyDate: XXXX年XX月XX日 XX:XX:XX*@Version:V6.0*/public class HttpRequestUtil{/*** HttpClient模拟POST请求*方法说明*@Discription:扩展说明*@param url*@param params*@return String*@Author: feizi*@Date: XXXX年XX月XX日 XX:XX:XX*@ModifyUser:feizi*@ModifyDate: XXXX年XX月XX日 XX:XX:XX*/ public static String postRequest(String url, Map<String, String> params){//构造HttpClient的实例 HttpClient httpClient= new HttpClient();//创建POST方法的实例 PostMethod postMethod= new PostMethod(url);//设置请求头信息 postMethod.setRequestHeader("Connection","close");//添加参数 for(Map.Entry<String, String> entry: params.entrySet()){ postMethod.addParameter(entry.getKey(), entry.getValue());}//使用系统提供的默认的恢复策略,设置请求重试处理,用的是默认的重试处理:请求三次 httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);//接收处理结果 String result= null; try{//执行Http Post请求 httpClient.executeMethod(postMethod);//返回处理结果 result= postMethod.getResponseBodyAsString();} catch(HttpException e){//发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace();} catch(IOException e){//发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace();} finally{//释放链接 postMethod.releaseConnection();//关闭HttpClient实例 if(httpClient!= null){((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient= null;}} return result;}/*** HttpClient模拟GET请求*方法说明*@Discription:扩展说明*@param url*@param params*@return String*@Author: feizi*@Date: XXXX年XX月XX日 XX:XX:XX*@ModifyUser:feizi*@ModifyDate: XXXX年XX月XX日 XX:XX:XX*/ public static String getRequest(String url, Map<String, String> params){//构造HttpClient实例 HttpClient client= new HttpClient();//拼接参数 String paramStr=""; for(String key: params.keySet()){ paramStr= paramStr+"&"+ key+"="+ params.get(key);} paramStr= paramStr.substring(1);//创建GET方法的实例 GetMethod method= new GetMethod(url+"?"+ paramStr);//接收返回结果 String result= null; try{//执行HTTP GET方法请求 client.executeMethod(method);//返回处理结果 result= method.getResponseBodyAsString();} catch(HttpException e){//发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace();} catch(IOException e){//发生网络异常 System.out.println("发生网络异常!"); e.printStackTrace();} finally{//释放链接 method.releaseConnection();//关闭HttpClient实例 if(client!= null){((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client= null;}} return result;}}
2、在创建一个类,生成验证码,然后传递相应的参数(不同的短信平台接口会有不同的参数要求,这个一般短信平台提供的接口文档中都会有的,直接看文档然后按要求来即可)
/***文件说明*@Description:扩展说明*@Copyright: XXXX dreamtech.com.cn Inc. All right reserved*@Version: V6.0*/package com.demo.util; import java.net.URLEncoder;import java.util.HashMap;import java.util.Map;/***@Author: feizi*@Date: XXXX年XX月XX日 XX:XX:XX*@ModifyUser: feizi*@ModifyDate: XXXX年XX月XX日 XX:XX:XX*@Version:V6.0*/public class SendMsgUtil{/***发送短信消息*方法说明*@Discription:扩展说明*@param phones*@param content*@return*@return String*@Author: feizi*@Date: 2015年4月17日下午7:18:08*@ModifyUser:feizi*@ModifyDate: 2015年4月17日下午7:18:08*/@SuppressWarnings("deprecation") public static String sendMsg(String phones,String content){//短信接口URL提交地址 String url="短信接口URL提交地址"; Map<String, String> params= new HashMap<String, String>(); params.put("zh","用户账号"); params.put("mm","用户密码"); params.put("dxlbid","短信类别编号"); params.put("extno","扩展编号");//手机号码,多个号码使用英文逗号进行分割 params.put("hm", phones);//将短信内容进行URLEncoder编码 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, params);}/***随机生成6位随机验证码*方法说明*@Discription:扩展说明*@return*@return String*@Author: feizi*@Date: 2015年4月17日下午7:19:02*@ModifyUser:feizi*@ModifyDate: 2015年4月17日下午7:19:02*/ public static String createRandomVcode(){//验证码 String vcode=""; for(int i= 0; i< 6; i++){ vcode= vcode+(int)(Math.random()* 9);} return vcode;}/***测试*方法说明*@Discription:扩展说明*@param args*@return void*@Author: feizi*@Date: XXXX年XX月XX日 XX:XX:XX*@ModifyUser:feizi*@ModifyDate: XXXX年XX月XX日 XX:XX:XX*/ public static void main(String[] args){// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println("&ecb=12".substring(1)); System.out.println(sendMsg("18123456789,15123456789","尊敬的用户,您的验证码为"+ SendMsgUtil.createRandomVcode()+",有效期为60秒,如有疑虑请详询XXX-XXX-XXXX【XXX中心】"));}
然后执行一下,一般的情况下参数传递正确,按照接口文档的规范来操作的话,都会发送成功的,手机都能收到验证码的,然后可能会出现的问题就是:发送的短信内容有可能会出现中文乱码,然后就会发送不成功,按照短信平台的要求进行相应的编码即可。一般都会是UTF-8编码。
java怎么实现群发短信的功能
JAVA实现短信群发的步骤:
1、使用第三方短信平台服务商,接入短信服务;
2、调用短信提交页面发送请求;
3、服务器向第三方短信平台提交发送请求;
4、短信平台通过运营商将短信下发至用户的手机上。
以下是秒赛短信平台JAVA短信验证码接口代码示例
package test;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.lang3.StringUtils;
public class Apis{
//短信发送接口的http地址,请咨询客服
private static String url=“xxxxxxxxxxxxxxxxxxxxxxxxxxxx”;
//编码格式。发送编码格式统一用UTF-8
private static String ENCODING=“UTF-8”;
public static void main(String[] args) throws IOException, URISyntaxException{
//账号
String account=“************************”;
//密码
String pswd=“************************”;
//修改为您要发送的手机号,多个用,分割
String mobile=“13*********”;
//设置您要发送的内容
String msg=“【秒赛科技】您的验证码是:1234”;
//发短信调用示例
System.out.println(Apis.send(account,pswd, mobile, msg));
}
/**
*发送短信
*
*@param account
* account
*@param pswd
* pswd
*@param mobile
*手机号码
*@param content
*短信发送内容
*/
public static String send(String account,String pswd, String mobile, String msg){
NameValuePair[] data={ new NameValuePair(“account”, account),
new NameValuePair(“pswd”, pswd),
new NameValuePair(“mobile”, mobile),
new NameValuePair(“msg”, msg),
new NameValuePair(“needstatus”,“true”),
new NameValuePair(“product”,“”)};
return doPost(url, data);
}
/**
*基于HttpClient的post函数
* PH
*@param url
*提交的URL
*
*@param data
*提交NameValuePair参数
*@return提交响应
*/
private static String doPost(String url, NameValuePair[] data){
HttpClient client= new HttpClient();
PostMethod method= new PostMethod(url);
// method.setRequestHeader(“ContentType”,
//“application/x-www-form-urlencoded;charset=UTF-8”);
method.setRequestBody(data);
// client.getParams()。setContentCharset(“UTF-8”);
client.getParams()。setConnectionManagerTimeout(10000);
try{
client.executeMethod(method);
return method.getResponseBodyAsString();
} catch(Exception e){
e.printStackTrace();
}
return null;
}
}
如何用java的web程序实现短信业务
看你要如何实现了,简单的使用GSM猫,这个需要通过串口向猫发送命令,然后由猫来负责发送和接收短信。
另外可以直接向移动申请短信服务,通过他们提供的短信接口(CMPP3.0)发送和接收短信,大型的短信应用都是通过这种方式。不过这种方式,如果你的短信量达不到一定数量,是不会给你开通的。那样,你可能需要自己去找其它服务商代理了。
我以前做过一个项目,就是应为短信量不够,没有开通短信网关服务,没有办法用猫的形式做的。
不过,不要向我要代码,涉及到保密。当然代码很简单,就是熟悉你选用的猫的串口协议,然后利用楼上提到的java通信API通过串口发送和接收数据就可以了。
好了,文章到此结束,希望可以帮助到大家。