`
uule
  • 浏览: 6351527 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

发送短信的SmsUtil

 
阅读更多

配置文件:

 

 
sendUrl : http://ems.smsway.com.cn/sendSMS.action 

 

代码:

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Map;

import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;

import com.common.common.ProPertiesUtil;
import com.duogou.mall.service.common.StringUtil;
import com.ems.util.HttpUtil;
import com.ems.util.MD5;
import com.ems.util.XmlUtil;

public class SmsUtil {
	private static Logger logger = Logger.getLogger(SmsUtil.class);
	
	public static Boolean sendSms(String mobile,String content) {
		boolean nFlag = false;
		String sendURL = ProPertiesUtil.getValue("/sms.properties", "sendURL");
		//企业id
		String enterpriseID = ProPertiesUtil.getValue("/sms.properties", "enterpriseID");
		//登录名
		String loginName = ProPertiesUtil.getValue("/sms.properties", "loginName");
		//密码
		String password = ProPertiesUtil.getValue("/sms.properties", "password");
		//消息id
		String smsId = "";
		//扩展端口
		String subPort = "";
		
		//定时发送时间
		String sendTime = "";
		
		//post内容
		String postContent = "";
		
		//返回结果
		String returnXML = "";
		try {
			postContent = "enterpriseID=" + enterpriseID + "&loginName=" + loginName + "&password=" +  MD5.toMD5(password) + "&smsId=" + smsId + "&subPort=" + subPort + "&content=" + java.net.URLEncoder.encode(content, "UTF-8") + "&mobiles=" + mobile + "&sendTime=" +sendTime;
			returnXML = HttpUtil.httpPostRequest(new URL(sendURL), postContent);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			logger.error(e.getStackTrace());
			return false;
		}
//		System.out.println("sendURL returnXML = " + returnXML);
		
		//解释xml结果
		Map map = null;
		map = XmlUtil.getNodeValues(XmlUtil.getRootElement(returnXML));
		String result = (String)map.get("Result");    //应用时判断,若该值为0表示成功往下取smsid,若不为0则是相应错误代码。
		System.out.println(result);
		if(result.equals("0")){  //发送成功
			String SmsId = (String)map.get("SmsId");
			System.out.println(SmsId);
			if(StringUtil.isNotEmpty(SmsId)){
				nFlag = true;
//				System.out.println("发送成功");
//				System.out.println("result = " + result + " SmsId = " + SmsId);
			}
			
		}else{
//			System.out.println("发送失败");
		}
		return nFlag;
    }
	
	public static void main(String[] args) throws MalformedURLException, Exception {
		SmsUtil.sendSms("139999999", "验证码:123123");
	}
}

 

工具类:

发送请求:HttpUtil.httpPostRequest

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.log4j.Logger;

public class HttpUtil {
	private static final Logger logger = Logger.getLogger(HttpUtil.class);
	/**
	 * http post请求
	 * @param url						地址
	 * @param postContent				post内容格式为param1=value&param2=value2&param3=value3
	 * @return
	 * @throws IOException
	 */
	public static String httpPostRequest(URL url, String postContent) throws Exception{
		OutputStream outputstream = null;
		BufferedReader in = null;
		try
		{
			URLConnection httpurlconnection = url.openConnection();
			httpurlconnection.setConnectTimeout(10 * 1000);
			httpurlconnection.setDoOutput(true);
			httpurlconnection.setUseCaches(false);
			OutputStreamWriter out = new OutputStreamWriter(httpurlconnection
					.getOutputStream(), "UTF-8");
			out.write(postContent);
			out.flush();
			
			StringBuffer result = new StringBuffer();
			in = new BufferedReader(new InputStreamReader(httpurlconnection
					.getInputStream(),"UTF-8"));
			String line;
			while ((line = in.readLine()) != null)
			{
				result.append(line);
			}
			return result.toString();
		}
		catch(Exception ex){
			logger.error("post请求异常:" + ex.getMessage());
			throw new Exception("post请求异常:" + ex.getMessage());
		}
		finally
		{
			if (outputstream != null)
			{
				try
				{
					outputstream.close();
				}
				catch (IOException e)
				{
					outputstream = null;
				}
			}
			if (in != null)
			{
				try
				{
					in.close();
				}
				catch (IOException e)
				{
					in = null;
				}
			}
		}	
	}	
	
	/**
	 * 通过httpClient进行post提交
	 * @param url				提交url地址
	 * @param charset			字符集
	 * @param keys				参数名
	 * @param values			参数值
	 * @return
	 * @throws Exception
	 */
	public static String HttpClientPost(String url , String charset , String[] keys , String[] values) throws Exception{
		HttpClient client = null;
		PostMethod post = null;
		String result = "";
		int status = 200;
		try {
	           client = new HttpClient();                
               //PostMethod对象用于存放地址
             //总账户的测试方法
               post = new PostMethod(url);         
               //NameValuePair数组对象用于传入参数
               post.addRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=" + charset);//在头文件中设置转码

               String key = "";
               String value = "";
               NameValuePair temp = null;
               NameValuePair[] params = new NameValuePair[keys.length];
               for (int i = 0; i < keys.length; i++) {
            	   key = (String)keys[i];
            	   value = (String)values[i];
            	   temp = new NameValuePair(key , value);   
            	   params[i] = temp;
            	   temp = null;
               }
              post.setRequestBody(params); 
               //执行的状态
              status = client.executeMethod(post); 
              logger.info("status = " + status);
               
              if(status == 200){
            	  result = post.getResponseBodyAsString();
              }
               
		} catch (Exception ex) {
			// TODO: handle exception
			throw new Exception("通过httpClient进行post提交异常:" + ex.getMessage() + " status = " + status);
		}
		finally{
			post.releaseConnection(); 
		}
		return result;
	}
	
	/**
	 * 字符串处理,如果输入字符串为null则返回"",否则返回本字符串去前后空格。
	 * @param inputStr			输入字符串
	 * @return	string 			输出字符串
	 */
    public static String doString(String inputStr){
    	//如果为null返回""
        if(inputStr == null || "".equals(inputStr) || "null".equals(inputStr)){
    		return "";
    	}	
        //否则返回本字符串把前后空格去掉
    	return inputStr.trim();
    }

    /**
     * 对象处理,如果输入对象为null返回"",否则则返回本字符对象信息,去掉前后空格
     * @param object
     * @return
     */
    public static String doString(Object object){
    	//如果为null返回""
        if(object == null || "null".equals(object) || "".equals(object)){
    		return "";
    	}	
        //否则返回本字符串把前后空格去掉
    	return object.toString().trim();
    }
    
}

 

解析XML:

XmlUtil.getNodeValues

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;




public class XmlUtil {
	private static final Logger logger = Logger.getLogger(XmlUtil.class);
	
	/**
	 * 获得根据节点信息
	 * @param xml				xml字符串
	 * @return
	 */
	public static Element getRootElement(String xml){
		Document doc = null;
		Element root = null;
		
		try {
			doc = DocumentHelper.parseText(xml); 
			root = doc.getRootElement();
			
		} catch (Exception ex) {
			// TODO: handle exception
			logger.error("解释xml文件出现异常:" + ex.getMessage());
		}
		return root;
	} 
	
	/**
	 * 获得指定元素下所有节点属性及值
	 * @param element
	 * @return
	 */
	public static Map getNodeValues(Element element){
		Element root = null;
		Map map = new HashMap();
		try {
			List list = element.elements();
			Element e = null;
			for (int i = 0; i < list.size(); i++) {
				e = (Element)list.get(i);
				map.put(e.getName(), e.getText());
			}			
		} catch (Exception ex) {
			// TODO: handle exception
			logger.error("获得指定元素下所有节点属性及值出现异常: " + ex.getMessage());
		}
		return map;
	} 
	
	/**
	 * 获得指定节点指定属性值
	 * @param element					元素名称
	 * @param attributeName				属性名称
	 * @return
	 */
	public static String getElementAttributeValue(Element element,String attributeName){
		String value = "";
		try {
			value = element.attributeValue("attributeName");
		} catch (Exception ex) {
			// TODO: handle exception
			logger.error("获得指定节点指定属性值出现异常: " + ex.getMessage());
		}
		return value;
	}
	
	
	public static void main(String[] args) {
		try {
			String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><Result>0</Result><Mo num=\"2\"><Item id=\"1\" content=\"上行01\" from_mobile=\"13500000000\" to_port=\"0001\" rec_time=\"2013-07-20 13:23:45\"/><Item id=\"2\" content=\"上行02\" from_mobile=\"13600000000\" to_port=\"0002\" rec_time=\"2013-07-20 13:23:45\"/></Mo></Response >";
			Map map = XmlUtil.getNodeValues(XmlUtil.getRootElement(xml));
			String result = (String)map.get("Result");
			System.out.println("result = " + result );
			
			Element mo = XmlUtil.getRootElement(xml).element("Mo");
			System.out.println("mo = " + mo);
			int num = Integer.parseInt(mo.attributeValue("num"));
			System.out.println("size = " + num);
			Element item = null;
			List list = mo.elements();
			
			for (int i = 0; i < list.size(); i++) {
				item = (Element)list.get(i);
				System.out.println("id = " + item.attributeValue("id") + " content = " + item.attributeValue("content") + " from_mobile = " + item.attributeValue("from_mobile") + " to_port = " + item.attributeValue("to_port") + " rec_time = " + item.attributeValue("rec_time"));
			}
			
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("ERROR:" + e.getMessage());
		}

	}

}

 

 

 

 

 

 

  • 大小: 5.8 KB
  • 大小: 5.8 KB
分享到:
评论

相关推荐

    SmsUtil.zip_SMS工具类_java中SMSutil_短信平台_阿里大于发送短信工具类_阿里短信

    "SmsUtil.zip" 是一个包含阿里大于短信服务API的Java工具类,可以帮助开发者快速集成短信发送功能。下面,我们将深入探讨这个工具类以及相关知识点。 1. **阿里大于短信平台** 阿里大于(现更名为阿里云通信)是...

    SmsUtil.zip_SMSutil

    `SmsUtil.zip_SMSutil`这个压缩包文件显然包含了用于发送短信的工具类`SmsUtil.java`,它提供了方便的方法来实现这一功能。下面我们将深入探讨`SmsUtil`类可能包含的关键知识点。 首先,`SmsUtil`类很可能是一个...

    阿里发送短信封装类(AliyunSmsUtils.java、亲测可用)

    阿里发送短信封装类(AliyunSmsUtils.java)其中工具类中有很多需要替换的地方,阿里发送短信封装类(AliyunSmsUtils.java)阿里发送短信封装类(AliyunSmsUtils.java)

    Python-smsutil用于编码解码和分解SMS短信的Python工具类

    4. 使用示例:在Python代码中,你可以导入smsutil模块,然后调用它的方法,如`smsutil.decode()`用于解码接收到的编码短信,`smsutil.encode()`用于编码要发送的短信,以及`smsutil.concat_sms()`用于组合短信片段。...

    java发送阿里短信,util类中都已封装好,配置信息换成自己的

    在Java开发中,有时我们需要集成短信服务来实现验证码发送、通知提醒等功能。阿里云提供了这样的服务,通过其SDK我们可以方便地在Java应用中发送短信。本文将深入解析如何使用Java发送阿里短信,以及如何利用封装好...

    阿里云实现短信验证码发送

    接下来,`SmsUtil` 类用于与阿里云短信服务进行交互。这里定义了两个关键的静态变量:`KEYID` 和 `SECRET`,它们是阿里云账户的访问密钥ID和密钥,用于身份验证。`createClient` 方法根据这些密钥创建了一个阿里云...

    client发送短信验证码(云之讯)

    3、按照SmsUtil中的说明(示例代码)即可实现给特定手机号发送短信验证码 该jar包依赖: &lt;groupId&gt;com.google.code.gson&lt;/groupId&gt; &lt;artifactId&gt;gson &lt;version&gt;2.3.1 &lt;groupId&gt;org.apache.httpcomponents ...

    JAVA JNI 短信猫.pdf

    JNI(Java Native Interface)是Java平台提供的一种原生接口,用于在Java代码中调用本地(操作...在短信猫项目中,通过JNI调用C++编写的短信接口,Java程序可以方便地发送和接收短信,实现了与第三方短信服务器的通信。

    SMSUtil.java

    利用HttpClient的一个非阿利大于发短信的工具类,下载调试即可使用。

    阿里大鱼资料操作详细包含代码

    接着,你可以参考提供的DEMO代码,如`SmsDemo.java`,创建自己的工具类,如`SmsUtil.java`,用于封装发送短信的逻辑。在代码中,需要设置产品名称和域名,并替换为自己的Access Key ID和Access Key Secret(简称AK)...

    Spring MVC 中 短信验证码功能的实现方法

    在这个示例中,`SMSUtil.send(phone, smsText)`是调用封装好的短信接口发送工具类,它负责将验证码通过HTTP请求发送到第三方短信平台。你需要将`API_KEY`替换为你实际获取的API密钥。 至此,短信验证码的发送流程...

    xnx3:常用工具类,方便快速开发

    xnx3-2.2.jar 快速开发工具类,用最简洁的命令实现想要的功能。辅助模拟开发。 当前屏幕上搜索某个图像是否存在,并拿到搜索到的图片... SMSUtil.send("17076012262", "这是短信内容"); 发送给一封邮件 MailUtil.se

    组织概述1

    `ExcelUtils`将Excel文件转换为List对象,`JWTUtil`用于生成、验证和提取Token,`LoggerUtil`简化日志记录,`NoPermissionException`处理Shiro未授权异常,`SmsUtil`是阿里云短信服务的工具类,`WeekTimeUtil`处理...

Global site tag (gtag.js) - Google Analytics