热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

短信发送Api

2019独角兽企业重金招聘Python工程师标准提供商:中国网建SMS网信通短信Api接口地址:http:sms.webchinese.cnapi

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

提供商:中国网建 SMS网信通

短信Api接口地址:

http://sms.webchinese.cn/api.shtml

注意:这里会提供简单的调用例子,而且还有几次免费短信,可以供我们开发者测试

1、短信接口

package com.frame.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.zip.GZIPInputStream;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
/*** 发送短信Api接口* @author Curtain**/
public class PureNetUtil {/*** 用来输出现在时间* @return*/public static String currentTime(){SimpleDateFormat sdformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制return sdformat.format(new Date());}/*** get方法直接调用post方法* @param url 网络地址* @return 返回网络数据*/public static String get(String url){return post(url,null,null);}public static String get(String url,String charset){return post(url,null,charset);}/*** 设定post方法获取网络资源,如果参数为null,实际上设定为get方法* @param url 网络地址* @param param 请求参数键值对* @return 返回读取数据*/public static String post(String  url,Mapparam,String outCharset){if(outCharset==null||outCharset.equals("")){outCharset="utf-8";}HttpURLConnection conn=null;try {URL u=new URL(url);conn=(HttpURLConnection) u.openConnection();conn.setRequestProperty("User-agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36");conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");conn.setRequestProperty("Accept", "application/json;charset=utf-8");conn.setConnectTimeout(60000);conn.setReadTimeout(60000);StringBuffer sb=null;if(param!=null){//如果请求参数不为空sb=new StringBuffer();/*A URL connection can be used for input and/or output.  Set the DoOutput* flag to true if you intend to use the URL connection for output,* false if not.  The default is false.*///默认为false,post方法需要写入参数,设定trueconn.setRequestMethod("POST");conn.setDoOutput(true);//设定post方法,默认get//获得输出流OutputStream out=conn.getOutputStream();//对输出流封装成高级输出流BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));//将参数封装成键值对的形式for(Map.Entry s:param.entrySet()){sb.append(s.getKey()).append("=").append(s.getValue()).append("&");}System.out.println("para:"+sb.deleteCharAt(sb.toString().length()-1).toString());writer.write(sb.deleteCharAt(sb.toString().length()-1).toString());writer.close();//如果忘记关闭输出流将造成参数未完全写入的情况sb=null;}conn.connect();//建立连接sb=new StringBuffer();//获取连接状态码int recode=conn.getResponseCode();BufferedReader reader=null;if(recode==404){}if(recode==200){//Returns an input stream that reads from this open connection//从连接中获取输入流InputStream in=conn.getInputStream();String encoding=conn.getContentEncoding();if (encoding != null && encoding.equalsIgnoreCase("gzip")) {GZIPInputStream gis = new GZIPInputStream(in);reader=new BufferedReader(new InputStreamReader(gis,outCharset));for(String str=reader.readLine();str!=null;str=reader.readLine()){sb.append(str).append(System.getProperty("line.separator"));//原网页的换行加上}}else{reader=new BufferedReader(new InputStreamReader(in,outCharset));for(String str=reader.readLine();str!=null;str=reader.readLine()){sb.append(str).append(System.getProperty("line.separator"));//原网页的换行加上}}//关闭输入流reader.close();if (sb.toString().length() == 0) {return null;}return sb.toString().substring(0,sb.toString().length() - System.getProperty("line.separator").length());}} catch (Exception e) {e.printStackTrace();return null;}finally{if(conn!=null)//关闭连接conn.disconnect();}return null;}public static String  post(String url,Map param){HttpClient httpclient = new DefaultHttpClient();HttpPost httppost = new HttpPost(url);StringBuffer sb=null;try {List nameValuePairs = new ArrayList(param.size());if(param!=null){for(Map.Entry map:param.entrySet()){nameValuePairs.add(new BasicNameValuePair(map.getKey().toString(), map.getValue().toString()));}}httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));HttpResponse response=httpclient.execute(httppost);InputStream in=response.getEntity().getContent();sb=new StringBuffer();BufferedReader reader=new BufferedReader(new InputStreamReader(in));for(String str=reader.readLine();str!=null;str=reader.readLine()){sb.append(str).append(System.getProperty("line.separator"));//原网页的换行加上}reader.close();} catch (Exception e) {e.printStackTrace();}return sb.toString();}/*** 这个方法主要是用来直接向服务器传输参数,比如已经加密的数据,直接传到服务器* @param url* @param data* @return*/public static String post(String  url,byte[] data ){HttpURLConnection conn=null;try {URL u=new URL(url);conn=(HttpURLConnection) u.openConnection();conn.setRequestProperty("User-agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36");StringBuffer sb=null;sb=new StringBuffer();/*A URL connection can be used for input and/or output.  Set the DoOutput* flag to true if you intend to use the URL connection for output,* false if not.  The default is false.*///默认为false,post方法需要写入参数,设定trueconn.setRequestMethod("POST");conn.setDoOutput(true);//设定post方法,默认get//获得输出流OutputStream out=conn.getOutputStream();//对输出流封装成高级输出流BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));//将参数封装成键值对的形式writer.write(new String(data));writer.close();//如果忘记关闭输出流将造成参数未完全写入的情况conn.connect();//建立连接//获取连接状态码int recode=conn.getResponseCode();BufferedReader reader=null;if(recode==404){System.out.println("404===>"+url);}if(recode==200){//Returns an input stream that reads from this open connection//从连接中获取输入流InputStream in=conn.getInputStream();String encoding=conn.getContentEncoding();if (encoding != null && encoding.equalsIgnoreCase("gzip")) {GZIPInputStream gis = new GZIPInputStream(in);reader=new BufferedReader(new InputStreamReader(gis));for(String str=reader.readLine();str!=null;str=reader.readLine()){sb.append(str).append(System.getProperty("line.separator"));//原网页的换行加上}}else{reader=new BufferedReader(new InputStreamReader(in));for(String str=reader.readLine();str!=null;str=reader.readLine()){sb.append(str).append(System.getProperty("line.separator"));//原网页的换行加上}}//关闭输入流reader.close();if (sb.toString().length() == 0) {return null;}return sb.toString().substring(0,sb.toString().length() - System.getProperty("line.separator").length());}} catch (Exception e) {e.printStackTrace();return null;}finally{if(conn!=null)//关闭连接conn.disconnect();}return null;}
}

2、测试发送

public int sendVerification(String mobile,String company){try {int verification=six();//生成6位随机验证码String content = "欢迎您关注Curtain皇族"+verification;content=URLEncoder.encode(content, "utf-8");System.out.println(verification);String url = "http://utf8.sms.webchinese.cn/?Uid=you id&Key=you key&smsMob=you phone&smsText="+content+"";System.out.println(url);String sendResult=PureNetUtil.get(url);//将验证码发送给手机System.out.println("result===>"+sendResult);if(sendResult==null)return 0;JSONObject obj=JSONObject.fromObject(sendResult);if(obj==null)return 0;String error_code=obj.getString("error_code");if(error_code==null||!error_code.equals("0"))return 0;//如果没有成功返回0return verification;//否则返回这个六位验证码} catch (Exception e) {return 0;}}public static void main(String[] args) {System.out.println(new SendVerificationCodeDemo().sendVerification("you phone", "Curtain皇族"));}private static int six(){return 100000+new Random().nextInt(899999);}

3、注意

String url = "http://utf8.sms.webchinese.cn/?Uid=you uid&Key=you key&smsMob=you phone&smsText="+content+"";

这里的uid就相当于你在该网站的标识,自己设置

这里的key就是你的秘钥,也可以自己设置

143258_OwsC_2472104.jpg

4、Jar包

143724_AnT5_2472104.jpg


转:https://my.oschina.net/u/2472104/blog/610879



推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在List和Set集合中存储Object类型的数据元素 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
    深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ... [详细]
  • 在《ChartData类详解》一文中,我们将深入探讨 MPAndroidChart 中的 ChartData 类。本文将详细介绍如何设置图表颜色(Setting Colors)以及如何格式化数据值(Formatting Data Values),通过 ValueFormatter 的使用来提升图表的可读性和美观度。此外,我们还将介绍一些高级配置选项,帮助开发者更好地定制和优化图表展示效果。 ... [详细]
author-avatar
erryeg_342
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有