该程序我使用的是中国网建SMS短信通来实现的,中国网建地址:http://sms.webchinese.cn/default.shtml
具体使用步骤:
1、注册一个账户
2、获取到key
3、查看相关的api,他提供发送短信的方式有gbk和utf8编码的方式
GBK与UTF-8的请求地址
GBK编码发送接口地址: 参数说明: http://gbk.sms.webchinese.cn/ gbk编码方式请求路径 http://utf8.sms.webchinese.cn utf-8编码方式请求路径 Uid 中国网建的登录用户名 key注册时填写的接口安全密码 smsMob 需要发送的手机号码 smsText 发送的短信内容 具体代码GET与POST请求都实现了 /** * 短信发送工具类 * @author xiaohu * */ public class SMSUtil { /** * Get方式发送短信 * @param mobile 发送号码 * @param content 发送内容 * @return 返回响应编码 * @throws Exception */ public static int GetSMSSend(String mobile,String content) throws Exception{ //创建HttpClient对象 HttpClient httpClient=new HttpClient(); //请求URL String url="http://utf8.sms.webchinese.cn/?Uid="+Constant.UID+"&Key="+Constant.KEY+"&smsMob="+mobile+"&smsText="+content; //创建Get请求 GetMethod getMethod=new GetMethod(url); //在请求头中设置转码 getMethod.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8"); // 使用系统提供的默认恢复策略 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultMethodRetryHandler()); //获取头信息数组 Header[] header=getMethod.getRequestHeaders(); //执行GEt请求 httpClient.executeMethod(getMethod); //获取响应码 int stateCode=getMethod.getStatusCode(); if(stateCode!=HttpStatus.SC_OK){ System.out.println("Method fai"); } //循环打印出头信息 for (Header h : header) { System.out.println(h.toString()); } String result=new String(getMethod.getResponseBodyAsString().getBytes("utf-8")); System.out.println(result); return stateCode; } /** * Post请求发送 * @param mobile 发送手机号码 * @param content 发送内容 * @return 返回响应码 */ public static int PostSMSSend(String mobile,String content) throws Exception{ //创建HttpClient对象 HttpClient httpClient=new HttpClient(); //请求URL String url="http://utf8.sms.webchinese.cn"; //创建POSt请求 PostMethod post=new PostMethod(url); //设置请求头信息 post.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); //创建参数 NameValuePair value1=new NameValuePair("Uid", Constant.UID); NameValuePair value2=new NameValuePair("Key", Constant.KEY); NameValuePair value3=new NameValuePair("smsMob", mobile); NameValuePair value4=new NameValuePair("smsText", content); NameValuePair[] parametersBody={value1,value2,value3,value4};//将参数放入数组 post.setRequestBody(parametersBody);//设置POST请求参数 //使用系统提供的默认回复策略 post.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultMethodRetryHandler()); //执行POST方法 httpClient.executeMethod(post); //获取响应编码 int stateCode=post.getStatusCode(); //获取请求头参数信息 Header[] header=post.getResponseHeaders(); for(Header h:header){ System.out.println(h.toString()); } String result=new String(post.getResponseBodyAsString().getBytes("UTF-8")); System.out.println(result); return stateCode; } } 定义的常量类 public class Constant { public final static String UID="";//中国网建用户名 public final static String KEY="";//短信密钥 } 测试 public static void main(String[] args) { String mobile="";//发送手机号码 String content="您好";//发送内容 try { content=URLEncoder.encode(content, "UTF-8");//将发送内容转码,必须要转,否则请求报错 int stateCode=SMSUtil.GetSMSSend(mobile, content); } catch (Exception e) { e.printStackTrace(); } } 结果: 如果看到这样的结果则发送成功 如果发送失败则会返回响应的值 这里是从官网上截取下来的。还有一点,如果你想节约你的短信发送数量,建议发送短信内容的长度不要超过70个字,如果超过70个字,则会按照64个字为一条短信计算 实现短信发送还需要3个jar包 到这里这个功能就算实现了 |