码迷,mamicode.com
首页 > 其他好文 > 详细

短信发送接口demo

时间:2017-08-13 16:20:50      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:ams   app   mode   client   turn   one   get请求   sha-1   while   

public class SendValidCode {
	// 短信发送的接口网关
	private static String sendUrl = "****************************";

	/**
	 * @Title: sendMessage
	 * @Description: 验证码短信发送
	 * @param userName:发送的用户名
	 * @param userPass:密码
	 * @param iphoneNum:电话号码
	 * @param signature:签名
	 * @return
	 * 
	 * @return: String返回发送的结果
	 */
	public static String  sendMessage(String userName, String userPass, String iphoneNum, String signature,
			String validcode, String channel) {
		// 发送结果
		String msgContent = "验证码:" + validcode + ",请在60秒内完成验证。如非本人操作,请忽略。";// 发送消息的内容
		String encrypStrPara1 = "userPass=" + userPass + "&DesNo=" + iphoneNum + "&Msg=" + msgContent + "【" + signature +"】&Channel=" + channel;

		String encryptStr = DESEncrypt(encrypStrPara1, userPass);

		List<NameValuePair> nvps = new ArrayList<NameValuePair>();
		nvps.add(new BasicNameValuePair("userCode", userName));
		nvps.add(new BasicNameValuePair("submitInfo", encryptStr));

		String post = httpPost(sendUrl, nvps); // post请求

		//String getparam = "userCode=" + userName +"&submitInfo=" + encryptStr;
		//String result = httpGet(sendUrl, getparam); // get请求
       
		// 返回结果
		return post;
	}

	private static String DESEncrypt(String encryptStr, String key) {
		String result = "";
		try {
			String encryptKey = SHA1(key).substring(0, 8).toUpperCase();
			DESKeySpec desKeySpec = new DESKeySpec(encryptKey.getBytes());
			SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
			SecretKey securekey = keyFactory.generateSecret(desKeySpec);
			Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
			IvParameterSpec ivp = new IvParameterSpec(encryptKey.getBytes());
			cipher.init(Cipher.ENCRYPT_MODE, securekey, ivp);
			byte[] encryptResult = cipher.doFinal(encryptStr.getBytes("GB2312"));
			result = BinaryToHexString(encryptResult);
		} catch (Exception e) {
			System.out.println(e.getStackTrace());
			System.out.println(e.getMessage());
		}
		return result;
	}

	private static String SHA1(String key) {
		StringBuffer sb = new StringBuffer();
		try {
			MessageDigest md = MessageDigest.getInstance("SHA-1");
			md.update(key.getBytes("GB2312"));
			byte[] resultsha = md.digest();
			for (byte b : resultsha) {
				int i = b & 0xff;
				if (i < 0xf) {
					sb.append(0);
				}
				sb.append(Integer.toHexString(i));
			}
		} catch (Exception e) {
		}
		return sb.toString();
	}

	private static String BinaryToHexString(byte[] bytes) {
		String hexStr = "0123456789ABCDEF";
		String result = "";
		String hex = "";
		for (int i = 0; i < bytes.length; i++) {
			// 字节高4位
			hex = String.valueOf(hexStr.charAt((bytes[i] & 0xF0) >> 4));
			// 字节低4位
			hex += String.valueOf(hexStr.charAt(bytes[i] & 0x0F));
			result += hex;
		}
		return result;
	}

	private static String httpPost(String url, List<NameValuePair> params) {
		String result = "";
		try {
			HttpClient httpclient = new DefaultHttpClient();
			HttpPost httpPost = new HttpPost(url);
			httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
			HttpResponse response = httpclient.execute(httpPost);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				InputStream instreams = entity.getContent();
				result = convertStreamToString(instreams);
				
			}
		} catch (Exception e) {
		}
		return result;
	}

	private static String httpGet(String url, String params) {
		String result = "";
		try {
			HttpClient client = new DefaultHttpClient();
			if (params != "") {
				url = url + "?" + params;
			}
			HttpGet httpget = new HttpGet(url);
			HttpResponse response = client.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				InputStream instreams = entity.getContent();
				result = convertStreamToString(instreams);
				
			}
		} catch (Exception e) {
		}
		return result;
	}

	private static String convertStreamToString(InputStream is) {
		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		StringBuilder sb = new StringBuilder();

		String line = null;
		try {
			while ((line = reader.readLine()) != null) {
				sb.append(line + "\n");
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				is.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}

	/*public static void main(String[] args) {
		
		String result = SendValidCode.sendMessage("XMSTCF", "XMST123abc", "185****3547", "万兆天空", "123456","0");
		System.out.println(result+">>>>>>>");
		
		
	 }*/

}

  

短信发送接口demo

标签:ams   app   mode   client   turn   one   get请求   sha-1   while   

原文地址:http://www.cnblogs.com/ipetergo/p/7353546.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!