使用中国网建实现Java向手机发送短信的功能

公司需要使用向指定手机发送验证码的功能,在网上搜了一下,有使用’短信猫’的,有使用WebService的,有使用第三方的,我使用的是中国网建提供的API来实现;
中国网建注册送五条短信和三条彩信做测试,这就足够了,今天公司刚买了几千条做测试!
首先是编码的选择:

GBK编码发送接口地址:
http://gbk.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全秘钥&smsMob=手机号码&smsText=验证码:8888 
UTF-8编码发送接口地址:
http://utf8.sms.webchinese.cn/?Uid=本站用户名&Key=接口安全秘钥&smsMob=手机号码&smsText=验证码:8888

参数详解如下表
使用中国网建实现Java向手机发送短信的功能_第1张图片
我用的是UTF-8,官网提供了一个demo示例,用的httpclient是3.x,但我要用4.3.3,跟公司项目相匹配,

public String SendSecurityCode(String tel, String code) throws ClientProtocolException, IOException {
        CloseableHttpClient client = HttpClientBuilder.create().build(); 
        HttpPost post = new HttpPost("http://utf8.sms.webchinese.cn"); 
        post.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");//在头文件中设置转码
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        formparams.add(new BasicNameValuePair("Uid", "公司名"));
        formparams.add(new BasicNameValuePair("Key", "短信密钥"));
        formparams.add(new BasicNameValuePair("smsMob",tel));
        formparams.add(new BasicNameValuePair("smsText","欢迎成为APP用户,验证码:" + code));
        try {
            post.setEntity(new UrlEncodedFormEntity(formparams,"utf-8"));//设置参数编码格式
        } catch (Exception e1) {
            e1.printStackTrace();
        }

        CloseableHttpResponse response =  client.execute(post);

        int statusCode = response.getStatusLine().getStatusCode();
        System.out.println("statusCode:"+statusCode);
        Header[] headers = response.getAllHeaders();

        for(Header h : headers)
        {
            System.out.println(h.toString());
        }
        String result  = EntityUtils.toString(response.getEntity());
        System.out.println("----"+result); //打印返回消息状态
        post.releaseConnection();
        client.close();
        return result;
    }

一定要注意编码,因为如果编码不统一,导致乱码,会被拦截下来,导致短信发送不出去,上午就卡在这一块。
注意代码中的result,返回的是结果码,如下表格
使用中国网建实现Java向手机发送短信的功能_第2张图片

有几点要注意,一个是短信密钥,一个是短信签名!
分别在“修改短信密钥”和“用户信息修改”,这两个是必填的,不然短信会发不出去,或者被拦截!
到此,将代码跑起来,等待手机的短信吧!
(具体的可以去中国网建官网进行查看和咨询客服。。。不是做广告的。。。。)

你可能感兴趣的:(java,接口,验证码,发送短信)