文档章节

java通过短信接口发送短信

贝克街的亡灵sf
 贝克街的亡灵sf
发布于 2016/06/24 15:22
字数 663
阅读 37
收藏 0

package com.fh.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;

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;

import org.dom4j.Document;   
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;   
import org.dom4j.Element;   

/**
 * 通过短信接口发送短信
 */
public class SmsUtil {
    
    
    public static void main(String [] args) {
        
        sendSms2("13764892320","自己测试自己");
        //sendSmsAll(List<PageData> list)
        
        //sendSms1();
    }
    
    
    

     //短信商 一  http://www.dxton.com/ =====================================================================================
    /**
     * 给一个人发送单条短信
     * @param mobile 手机号
     * @param code  短信内容
     */
     public static void sendSms1(String mobile,String code){
         
        String account = "", password = "";
        String strSMS1 = Tools.readTxtFile(Const.SMS2);            //读取短信1配置
        if(null != strSMS1 && !"".equals(strSMS1)){
            String strS1[] = strSMS1.split(",fh,");
            if(strS1.length == 2){
                account = strS1[0];
                password = strS1[1];
            }
        }
         String PostData = "";
        try {
            PostData = "&uid="+account+"&pwd="+MD5.md5(password)+"&mobile="+mobile+"&content="+URLEncoder.encode(code,"utf-8")+"&encode=utf8";
        } catch (UnsupportedEncodingException e) {
            System.out.println("短信提交失败");
        }
         //System.out.println(PostData);
          String ret = SMS(PostData, "http://api.cnsms.cn/?ac=send");
          System.out.println(ret);
        /*  
        100            发送成功
        101            验证失败
        102            手机号码格式不正确
        103            会员级别不够
        104            内容未审核
        105            内容过多
        106            账户余额不足
        107            Ip受限
        108            手机号码发送太频繁,请换号或隔天再发
        109            帐号被锁定
        110            发送通道不正确
        111            当前时间段禁止短信发送
        120            系统升级
        */
          
    }
    
     public static String SMS(String postData, String postUrl) {
            try {
                //发送POST请求
                URL url = new URL(postUrl);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("POST");
                conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                conn.setRequestProperty("Connection", "Keep-Alive");
                conn.setUseCaches(false);
                conn.setDoOutput(true);

                conn.setRequestProperty("Content-Length", "" + postData.length());
                OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
                out.write(postData);
                out.flush();
                out.close();

                //获取响应状态
                if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                    System.out.println("connect failed!");
                    return "";
                }
                //获取响应内容体
                String line, result = "";
                BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
                while ((line = in.readLine()) != null) {
                    result += line + "\n";
                }
                in.close();
                return result;
            } catch (IOException e) {
                e.printStackTrace(System.out);
            }
            return "";
        }
     //===================================================================================================================
     
     
    /**
     * 
     * 短信商 二  http://www.ihuyi.com/ =====================================================================================
     * 
     */
    //之前的private static String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit";
    
    private static String Url = "http://api.cnsms.cn/?ac=send";
    
    /**
     * 给一个人发送单条短信
     * @param mobile 手机号
     * @param code  短信内容
     */
    public static void sendSms2(String mobile,String code){
        HttpClient client = new HttpClient(); 
        PostMethod method = new PostMethod(Url); 
            
        client.getParams().setContentCharset("UTF-8");
        method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=UTF-8");

        String content = new String(code);  
        
        String account = "", password = "";
        String strSMS2 = Tools.readTxtFile(Const.SMS2);            //读取短信2配置
        if(null != strSMS2 && !"".equals(strSMS2)){
            String strS2[] = strSMS2.split(",fh,");
            if(strS2.length == 2){
                account = strS2[0];
                password = strS2[1];
            }
        }
       
        NameValuePair[] data = {//提交短信
            new NameValuePair("uid", account), 
            new NameValuePair("pwd",  MD5.md5(password)),             //密码可以使用明文密码或使用32位MD5加密
            new NameValuePair("mobile", mobile), 
            new NameValuePair("content", content),
            new NameValuePair("encode", "utf8"),
        };
        
        method.setRequestBody(data);
        
        try {
            client.executeMethod(method);
            
            String SubmitResult =method.getResponseBodyAsString();
                    
            Document doc = DocumentHelper.parseText(SubmitResult); 
            Element root = doc.getRootElement();


            code = root.elementText("code");
            String msg = root.elementText("msg");
            String smsid = root.elementText("smsid");
            
            
            System.out.println(code);
            System.out.println(msg);
            System.out.println(smsid);
            
            if(code == "2"){
                System.out.println("短信提交成功");
            }
            
        } catch (HttpException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (DocumentException e) {
            e.printStackTrace();
        }    
        
    }
    
    /**
     * 给多个人发送单条短信
     * @param list 手机号验证码
     */
    public static void sendSmsAll(List<PageData> list){
        String code;
        String mobile;
        for(int i=0;i<list.size();i++){
            code=list.get(i).get("code").toString();
            mobile=list.get(i).get("mobile").toString();
            sendSms1(mobile,code);
        }
    }
    // =================================================================================================
    
    
    
}

© 著作权归作者所有

上一篇: java二维码
下一篇: java压缩文件
贝克街的亡灵sf
粉丝 2
博文 42
码字总数 21597
作品 0
松江
程序员
私信 提问
试着从java到C去理解android中发送短信的源代码

今天在找GPRS的源代码的时候居然找到了SMS的源代码,那么就写个短信发送功能,并来解释下源代码吧(自己的理解,求别喷)。 首先来个短信发送的小程序吧 String number = "110"; 下面来解释一...

我不是咸蛋
2012/09/04
0
12
SMSLib实现Java短信收发的功能

用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: 1、 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送短信,适用于大型的通信公...

墙头草
2011/05/16
0
0
卡洛思短信验证码接口文档demo

企信通短信平台接口(API)是面向有一定技术开发能力的企业用户而单独研发的短信SDK接口。本接口采用了通用的HTTP形式,可以支持各种操作系统和开发语言,同时我们在接口文档中为您提供了ASP...

千古15
2016/09/25
175
2
SendSms短信发送相关记录

开发测试中遇到的问题(关于code传值); 修改为这样: 解决方案参考链接: java集成阿里短信平台 阿里云官网API 短信发送API(SendSms)---JAVA 其他参考链接 JAVA对接阿里大于短信验证 阿里云...

anlve
2018/07/27
0
0
SMS短信通API——(1)Java应用发送手机短信

1. SMS短信通 SMS短信通是中国网建提供的一个发送短信的应用,一般用于企业级用户。本博文介绍如何编写最简单的Hello World级Java程序,实现向指定手机号发送短信的功能。由于SMS短信通是一款...

晨曦之光
2012/04/24
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 请务必让我分担他们的痛苦!

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :分享石元丈晴的单曲《Why》: 《Why》- 石元丈晴 手机党少年们想听歌,请使劲儿戳(这里) @一代码哥 :当他妈狗屁的程序员,天天...

小小编辑
36分钟前
98
4
php 遇到 No input file specified的解决方法

(一)IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1...

chenhongjiang
今天
9
0
MySQL 基础

一、常用命令 在命令行中,配置好环境变量后,通过cmd可以直接进入mysql命令行模式,同时列举几种常用命令 # 进入mysql数据库,密码可以先不写,打完-p后再输入,防止被别人看到mysql -u账...

华山猛男
今天
6
0
简单的博客系统(四)Django请求HTML页面视图信息--基于函数的视图

1. 编写用于查询数据的功能函数 应用目录 下的 views.py 文件通常用于保存响应各种请求的函数或类 from django.shortcuts import renderfrom .models import BlogArticles# Create your ...

ZeroBit
今天
6
0
用脚本将本地照片库批量导入到Day One中

因为目前iCloud 空间已经不足,其中95%都是照片,之前入手了DayOne,且空间没有限制,订阅费一年也不少,再加上DayOne作为一款日记App 也比较有名,功能方面最大的就是地理视图与照片视图,尤...

在山的那边
昨天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部