Java调用短信验证码

来源:互联网 发布:炒股什么软件好 编辑:程序博客网 时间:2024/06/05 09:28

问题?Java调用短信验证码,ASP、C#、Delphi、JSP、PHP、VB6也可以调用短信验证码

   最近在做短信验证码的功能,在网上查找了半天,发现好多都是copy去copy来的,都看烦,到最后,直接去短信开发商那里,找了一个WebService的接口调用,就可以了。其实很多的短信验证码都是通过中介短信服务商来做的。


我用的这个是属于一个叫亿互无线的短信服务商,每天有几条短信测试。

官网:http://www.ihuyi.com/product.php

资源包下载:点击下载链接

导包:基础包,只要是短信WebService几乎都用到前面三个包。


调用代码:

package com.itcast.note;import java.io.IOException;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.PostMethod;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import com.itcast.util.StringUtil;public class NoteTest2 {private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";//该例子是成功的,使用的是http://www.ihuyi.com/product.php,该亿互无线网站的接口public static void main(String[] args) {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);// client.getParams().setContentCharset("GBK");client.getParams().setContentCharset("UTF-8");method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");int mobile_code = (int) ((Math.random() * 9 + 1) * 100000);System.out.println("验证码:"+mobile_code);// System.out.println(mobile);String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");NameValuePair[] data = {// 提交短信new NameValuePair("account", "用户名"),//去官网注册的一下即可new NameValuePair("password", "密码"), // 密码可以使用明文密码或使用32位MD5加密// new NameValuePair("password",// util.StringUtil.MD5Encode("密码")),new NameValuePair("mobile", "电话号码"),new NameValuePair("content", content), };method.setRequestBody(data);try {client.executeMethod(method);String SubmitResult = method.getResponseBodyAsString();// System.out.println(SubmitResult);Document doc = DocumentHelper.parseText(SubmitResult);Element root = doc.getRootElement();String code = root.elementText("code");String msg = root.elementText("msg");String smsid = root.elementText("smsid");System.out.println(code);System.out.println(msg);System.out.println(smsid);if ("2".equals(code)) {System.out.println("短信提交成功");}} catch (HttpException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

MD5加密工具类:这个官方写的,用来向官网接口服务商发送用户密码加密的。可以用明文,也可以用密文

package com.itcast.util;import java.security.MessageDigest;public class StringUtil {public static String str;public static final String EMPTY_STRING = "";private final static String[] hexDigits = { "0", "1", "2", "3", "4", "5","6", "7", "8", "9", "A", "B", "C", "D", "E", "F" };private static String byteToHexString(byte b) {int n = b;if (n < 0)n = 256 + n;int d1 = n / 16;int d2 = n % 16;return hexDigits[d1] + hexDigits[d2];}/** * 转换字节数组为16进制字串 * @param b 字节数组 * @return 16进制字串 */public static String byteArrayToHexString(byte[] b) {StringBuffer resultSb = new StringBuffer();for (int i = 0; i < b.length; i++) {resultSb.append(byteToHexString(b[i]));}return resultSb.toString();}public static String MD5Encode(String origin) {String resultString = null;try {resultString = new String(origin);MessageDigest md = MessageDigest.getInstance("MD5");resultString = byteArrayToHexString(md.digest(resultString.getBytes()));} catch (Exception ex) {}return resultString;}}


就要一个简单的调用WebService接口就可以实现。剩下的就是做网页扩展啊,把验证码放到session或者application域对象中,当提交表单数据的时候,取出来验证即可。有啥不懂的,可以Call Me





0 0
原创粉丝点击