今天看了下短信验证码,记一下,方便以后查找:
用的是中国网建的借口(是要收费的),首先需要在此网站上http://sms.webchinese.cn/api.shtml,注册一个用户,下面的图片为一些返回的状态码:
刚开始的时候控制台总是会报一个 -2 的状态码,最后发现调用的时候参数写错了,以为那个key就是注册时候的密码,最后发现还要获取一下秘钥,点击上面图片的“查看密钥”就能获取。下面是源码(网建官网有源码),下面为源码:
package com.message;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
public class MessageTest {
public static void main(String[] args)throws Exception
{
HttpClient client = new HttpClient();
PostMethod post = new PostMethod("http://gbk.sms.webchinese.cn");
post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码
NameValuePair[] data ={ new NameValuePair("Uid", "champion"),new NameValuePair("Key", "7e579a566f1ecc053fc7"),new NameValuePair("smsMob","182xxxxxxxx"),new NameValuePair("smsText","验证码8888")};
post.setRequestBody(data);
client.executeMethod(post);
Header[] headers = post.getResponseHeaders();
int statusCode = post.getStatusCode();
System.out.println("statusCode:"+statusCode);
for(Header h : headers)
{
System.out.println(h.toString());
}
String result = new String(post.getResponseBodyAsString().getBytes("gbk"));
System.out.println(result); //打印返回消息状态
post.releaseConnection();
}
}
commons-httpclient-3.1.jar
commons-codec-1.4.jar
如果是maven的话依赖是:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>20041127.091804</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.lucee</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>