手机短信验证,顾名思义就是要给手机发送一条信息,思路大概就是
1.和运营商直接接触达到这种需求
2.通过第三方SMS短信平台间接的和运营商接触达到这种需求
在网上招了一些短信发送平台,发现了一个简单的(我不是做广告)中国网建:http://www.smschinese.cn/default.shtml
明确说明:这个是一个烧钱的业务。不过刚注册的用户有5条免费的短信。
注*第一次申请成功后使用,需要在【短信修改秘钥】中添加签名。
中国网建的SMS平台接口如下:
中国网建SMS平台短信发送后的响应接口说明如下:
接口以及说的反应信息说明已经很清楚。在次说说java的实现过程:
首先需要的jar包:
commons-codec-1.4.jar,commons-httpclient-3.1.jar,commons-logging-1.1.1.jar
需要的加我qq:383264679 或者加我微信:maoxiandao_com 免费邮寄
package com.lgy.utils.phone;
import java.io.IOException;
import org.apache.commons.httpclient.Header;
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;
public class SendMsg {
public static void main(String[] args) 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=utf8");//在头文件中设置转码
NameValuePair[] data ={
new NameValuePair("Uid", "qq919571386"),
new NameValuePair("Key", "3e4e0ffcc86f3c64682e"),
new NameValuePair("smsMob","15820457505"),
new NameValuePair("smsText","恭喜你,你怀孕了!")
};
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
NameValuePair[] parameters = post.getParameters();
int statusCode = post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for (NameValuePair nameValuePair : parameters) {
System.out.println(nameValuePair.getName() + ":::" + nameValuePair.getValue());
}
for(Header h : headers) {
System.out.println(h.toString());
}
String result = new String(post.getResponseBodyAsString().getBytes("utf8"));
System.out.println(result); //打印返回消息状态
post.releaseConnection();
}
}
思路就是模拟javaee与http协议的交互,发送请求地址,请求头,请求信息,响应信息等。