1. 程式人生 > >短信驗證碼

短信驗證碼

esp ice [] tostring 號碼 turn 時間 har exceptio

public String sendCode(String phoneString){
String code=createRandomVcode();//驗證碼
// 用戶名
String name="nangcheng";
// 密碼
String pwd="405D046F8845AF375C5304360CCD";
// 電話號碼字符串,中間用英文逗號間隔
StringBuffer mobileString=new StringBuffer(phoneString);
// 內容字符串
StringBuffer contextString=new StringBuffer(code);
// 簽名
String sign="【海絡】";
// 追加發送時間,可為空,為空為及時發送
String stime="";
// 擴展碼,必須為數字 可為空
StringBuffer extno=new StringBuffer();

try {
String result=doPost(name, pwd, mobileString, contextString, sign, stime, extno);
log.info("Send code is"+result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return code;
}
/**
* 發送短信
*
* @param name 用戶名
* @param pwd 密碼
* @param mobileString 電話號碼字符串,中間用英文逗號間隔
* @param contextString 內容字符串
* @param sign 簽名
* @param stime 追加發送時間,可為空,為空為及時發送
* @param extno 擴展碼,必須為數字 可為空
* @return
* @throws Exception
*/
public static String doPost(String name, String pwd,
StringBuffer mobileString, StringBuffer contextString,
String sign, String stime, StringBuffer extno) throws Exception {
StringBuffer param = new StringBuffer();
param.append("name="+name);
param.append("&pwd="+pwd);
param.append("&mobile=").append(mobileString);
param.append("&content=").append(URLEncoder.encode(contextString.toString(),"UTF-8"));
param.append("&stime="+stime);
param.append("&sign=").append(URLEncoder.encode(sign,"UTF-8"));
param.append("&type=pt");
param.append("&extno=").append(extno);

URL localURL = new URL("http://api.daiyicloud.com/asmx/smsservice.aspx?");
URLConnection connection = localURL.openConnection();
HttpURLConnection httpURLConnection = (HttpURLConnection)connection;

httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Accept-Charset", "utf-8");
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
httpURLConnection.setRequestProperty("Content-Length", String.valueOf(param.length()));

OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
String resultBuffer = "";

try {
outputStream = httpURLConnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);

outputStreamWriter.write(param.toString());
outputStreamWriter.flush();

if (httpURLConnection.getResponseCode() >= 300) {
throw new Exception("HTTP Request is not success, Response code is " + httpURLConnection.getResponseCode());
}

inputStream = httpURLConnection.getInputStream();
resultBuffer = convertStreamToString(inputStream);

} finally {

if (outputStreamWriter != null) {
outputStreamWriter.close();
}

if (outputStream != null) {
outputStream.close();
}

if (reader != null) {
reader.close();
}

if (inputStreamReader != null) {
inputStreamReader.close();
}

if (inputStream != null) {
inputStream.close();
}

}

return resultBuffer;
}


/**
* 轉換返回值類型為UTF-8格式.
* @param is
* @return
*/
public static String convertStreamToString(InputStream is) {
StringBuilder sb1 = new StringBuilder();
byte[] bytes = new byte[4096];
int size = 0;

try {
while ((size = is.read(bytes)) > 0) {
String str = new String(bytes, 0, size, "UTF-8");
sb1.append(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb1.toString();
}
public static String createRandomVcode(){
//驗證碼
String vcode = "";
for (int i = 0; i < 4; i++) {
vcode = vcode + (int)(Math.random() * 9);
}
return vcode;
}

短信驗證碼