请求地址:https://sms3api.jvtd.cn/jtdsms/smsSend
请求方式:POST x-www-form-urlencoded
请求参数:
响应参数:
成功:成功则返回当前该批次短信唯一标识ID,即cid。
失败:直接返回对应错误码,错误码在下文有相应表述。
请求示例:
成功:
失败:
注:接口IP请与销售或者运营联系获取,下同。
请求地址:https://sms3api.jvtd.cn/jtdsms/sendData
请求方式:POST
请求参数:
响应参数:
成功:成功则返回当前该批次短信唯一标识ID,即cid。
失败:直接返回对应错误码,错误码在下文有相应表述。
请求示例:
成功:
失败:
注:如果发送批量个性短信请将mobile以英文逗号,隔开,每个content得到最终的base64编码格式以后也以英文逗号,隔开并且与号码保持一一对应关系,批量一次最多提交100条。
客户需提供接收数据的URL,系统以POST形式进行推送,客户侧的服务需支持多线程访问。每条报告各元素之间用英文,隔开,多条报告之间以英文分号;隔开。
推送参数为par对应的元素如下表:
推送示例:
par=902022,202725,30102,133xxxx7761,34311094531191332, DELIVRD,2019-03-12 04:52:54; 902022,202725,30102,133xxxx7761,34311094531191332, DELIVRD,2019-03-12 04:52:54
注:客户在接收到数据之后,应响应字符“0”,否则系统认为客户接收失败,会尝试重推。
客户需提供接收数据的URL,系统以POST形式进行推送,客户侧的服务需支持多线程访问。每条短信各元素之间用英文,隔开,多条短信之间以英文分号;隔开。
推送参数为par对应元素如下表:
推送示例:
par=902022, 202725, 30102, 133xxxx7761, %e4%bd%a0%e5%a5%bd%e6%b5%8b%e8%af%95%e7%9f%ad%e4%bf%a1%e4%b8%8a%e8%a1%8c,2015-4-10 13:44:43
注:客户在接收到数据之后,应响应字符“0”,否则系统认为客户接收失败,会尝试重推。
请求地址:https://sms3api.jvtd.cn/jtdsms/balance
请求方式:GET/POST
请求参数:
响应参数:
成功:当前uid账户余额。
失败:直接返回对应错误码,错误码在下文有相应表述。
请求示例:
成功:
失败:
Java版本
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import org.apache.commons.lang.StringUtils;
public class SendDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
String uid="";
String pwd="";
String moblies="13716205360";
String content="【百度】您验证码是08051608";
String ext="";
String attime="";
String result = SendDemo.smsSend(uid, pwd, moblies, content, ext, attime);
System.out.println("result="+result);
}
//发送短信
public static String smsSend(String userid, String password, String mobile, String content, String ext, String attime) {
String errMess = "";
StringBuffer sendData = new StringBuffer("");
try {
sendData.append("uid=").append(userid); // 用户名
String pwd = getMD5(password);//原始密码做MD5加密,32位大写格式
sendData.append("&password=").append(pwd); // 密码
sendData.append("&encode=").append("GBK"); // encode=GBK或者encode=utf8
String contentBase64 = Base64.getEncoder().encodeToString(content.getBytes("gbk"));// 先用encode中定义的格式编码,再用base64加密内容
sendData.append("&encodeType=base64"); // 固定
sendData.append("&content=").append(contentBase64); // base64加密后的内容
sendData.append("&mobile=").append(mobile); // 手机号
// sendData.append("&cid=").append("45955855252252555"); // 唯一标识,选填,如果不填系统自动生成作为当前批次的唯一标识
if(!StringUtils.isEmpty(ext)){
sendData.append("&extNumber=").append(ext); // 扩展
}
if(!StringUtils.isEmpty(attime)){
sendData.append("&schtime=").append(attime); // 定时时间,选填,格式2008-06-09 12:00:00
}
errMess =sendPost("https://sms3api.jvtd.cn/jtdsms/smsSend", sendData.toString());//普通短信
// errMess =sendPost("http://ip:8090/jtdsms/sendData.do", sendData.toString());//个性短信
} catch (Exception e) {
errMess = "-601";
}
return errMess;
}
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
public static String getMD5(String sourceStr){
String resultStr = "";
try {
byte[] temp = sourceStr.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(temp);
byte[] b = md5.digest();
for (int i = 0; i < b.length; i++) {
char[] digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F' };
char[] ob = new char[2];
ob[0] = digit[(b[i] >>> 4) & 0X0F];
ob[1] = digit[b[i] & 0X0F];
resultStr += new String(ob);
}
return resultStr;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
PHP版本
Demo文件
<?php
include '/Sms.php';//引入类文件
$model = new Sms('https://sms3api.jvtd.cn/jtdsms/smsSend','用户名','密码');
$res = $model->SendSms('手机号','【百度】您验证码是08051608');
var_dump($res);
?>
Sms类文件
<?php
class Sms{
private $url; // $url string 发送短信的接口 例如 http://ip:8090/jtdsms/smsSend.do
private $uid; // $uid string 用户的id
private $pass; // $pass string 用户的密码
public function __construct($url,$uid,$pass){
// $url string 发送短信的接口 例如 http://ip:8090/jtdsms/smsSend.do
$this->url = $url;
$this->uid = $uid;
$this->pass = $pass;
}
/*
* 发送短信
* $mobile 要发送的手机号
* $content 要发送的内容
*/
public function SendSms($mobile,$content){
//处理密码先md5加密再转大写
$pass = strtoupper(md5($this->pass));
//组装数组
$data = array(
'uid' => $this->uid,
'password' =>$pass ,
'mobile' => $mobile,//多条例子 xxxx,xxxx
'encode' => 'utf8',
'content' => base64_encode($content),//把内容进行base64转换
'encodeType' => 'base64',
'cid' => '',// 唯一标识,选填,如果不填系统自动生成作为当前批次的唯一标识
'extNumber' => '',// 扩展 选填
'schtime' => ''// 定时时间,选填,格式2008-06-09 12:00:00
);
$request = $this->httpPost($data);
return $request;
/* if($request['response_body'] >0){
成功
}else{
失败
}*/
}
/*
* php post提交数据
*/
private function httpPost($data){
// 启动一个CURL会话
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,$this->url);//接口地址
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded'
));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
// 执行操作
$response_body = curl_exec($curl);
//捕抓异常
$error_msg = "";
if (curl_errno($curl)) {
$error_msg = 'Errno' . curl_error($curl);
}
// 关闭CURL会话
curl_close($curl);
// 返回结果
$response["response_body"] = $response_body;//请求接口返回的数据 大于0代表成功,否则根据返回值查找错误
$response["error_msg"] = $error_msg;//curl post 提交发生的错误
return $response;
}
}
C#版本
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string url = "https://sms3api.jvtd.cn/jtdsms/smsSend";
string uid = "用户id";
string password = "密码";
string mobile = "13716205360";
string encode = "utf8";
string content = "【XXX】验证码是112233";
// string extNumber = "";
// string cid = "623516253162531";
// string schtime = "2008-06-09 12:00:00";
string encodeType = "base64";
string pswdMd5 = md5(password);
Encoding unicode = Encoding.Unicode;
Encoding utf_8 = Encoding.GetEncoding("UTF-8");
byte[] unicodeBytes = unicode.GetBytes(content);
byte[] utf8Bytes = Encoding.Convert(unicode, utf_8, unicodeBytes);
UTF8Encoding utf8 = new UTF8Encoding();
string contentToSend = Convert.ToBase64String(utf8Bytes);
IDictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("uid", uid);
parameters.Add("password", pswdMd5);
parameters.Add("mobile", mobile);
parameters.Add("encode", encode);
parameters.Add("content", contentToSend);
// parameters.Add("extNumber", extNumber);
// parameters.Add("cid", cid);
// parameters.Add("schtime", schtime);
parameters.Add("encodeType", encodeType);
HttpWebResponse res = CreatePostHttpResponse(url, parameters);
Console.WriteLine(GetResponseString(res));
}
//32位大写md5加密
public static String md5(String s)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);
bytes = md5.ComputeHash(bytes);
md5.Clear();
string ret = "";
for (int i = 0; i < bytes.Length; i++)
{
ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
}
return ret.PadLeft(32, '0').ToUpper();
}
public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<string, string> parameters )
{
HttpWebRequest request = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
request = WebRequest.Create(url) as HttpWebRequest;
//request.ProtocolVersion = HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
//发送POST数据
if (!(parameters == null || parameters.Count == 0))
{
StringBuilder buffer = new StringBuilder();
int i = 0;
foreach (string key in parameters.Keys)
{
if (i > 0)
{
buffer.AppendFormat("&{0}={1}", key, parameters[key]);
}
else
{
buffer.AppendFormat("{0}={1}", key, parameters[key]);
i++;
}
}
byte[] data = Encoding.ASCII.GetBytes(buffer.ToString());
using (Stream stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
}
string[] values = request.Headers.GetValues("Content-Type");
return request.GetResponse() as HttpWebResponse;
}
/// <summary>
/// 获取请求的数据
/// </summary>
public static string GetResponseString(HttpWebResponse webresponse)
{
using (Stream s = webresponse.GetResponseStream())
{
StreamReader reader = new StreamReader(s, Encoding.UTF8);
return reader.ReadToEnd();
}
}
}
}
Python 3.x版本
import urllib.request
import urllib.parse
import hashlib
import base64
def getmd5(src):
m = hashlib.md5()
m.update(src.encode('UTF-8'))
return m.hexdigest()
#用户名 请联系运营人员提供 必填
uid = ''
#md5 加密密码 请联系运营人员提供 必填
pwdStr = ''
pwd = getmd5(pwdStr)
pwd = pwd.upper()
#手机号 多个号码用英文逗号隔开
mobile = ''
#短信内容处理 必填 短信内容格式已【签名】+短信内容
content = '【百度】您验证码是08051608'
contentStr = base64.b64encode(content.encode(encoding='utf-8', errors = 'strict'))
#表示短信内容字符编码 必填 utf8 或GBK
encode = 'utf8'
#extNumber 扩展码 选填,如果需要请联系运营人员
extNumber =''
#cid 该批次短信唯一标识 选填 如不填系统将自动生成,仅支持数字格式
cid = ''
#schtime 定时发送时间 选填,格式2008-06-09 12:00:00
schtime = ''
#encodeType 必填,目前填写encodeType=base64
encodeType = 'base64'
# 定义一个要提交的数据数组(字典)
data = {'uid': uid, 'password':pwd,
'mobile': mobile, 'encode': encode,
'cid' : cid, 'extNumber' : extNumber,
'content': contentStr, 'schtime': schtime,
'encodeType': encodeType}
# 定义post的地址 默认为普通短信
url = 'https://sms3api.jvtd.cn/jtdsms/smsSend'
post_data = urllib.parse.urlencode(data).encode(encoding='UTF8')
# 提交,发送数据
req = urllib.request.urlopen(url, post_data)
# 获取提交后返回的信息
resp = req.read()
#打印响应数据
print(resp)
北京朝阳区惠河南街1102号国粹苑A座四层4063-4078
西安市高新区高新路67号含光佳苑小区A幢1单元308室
上海市长宁区金钟路633号
晨讯科技大楼b座716号
广州市黄埔区科学大道60号
绿地中央广场A2栋11楼1111单元
沈阳市和平区南五马路3号
中驰国际大厦5楼521室
青岛市李沧区北崂路1022号中
艺1688创意产业园D3楼420室
四川省成都市武侯区
蜀都中心二期1号楼3单元15楼
武汉市洪山区佳园路创业广场
7-5栋3层306室
长春市净月区生态广场伟峰
资讯中心4207
新疆乌鲁木齐市高新区长春中路
819号澳龙大厦B座21层2108
北京朝阳区惠河南街1102号国粹苑A座四层4063-4078
西安市高新区高新路67号含光佳苑小区A幢1单元308室
上海市长宁区金钟路633号晨讯科技大楼b座716号
广州市黄埔区科学大道60号绿地中央广场A2栋11楼1111单元
沈阳市和平区南五马路3号中驰国际大厦5楼521室
青岛市李沧区北崂路1022号中艺1688创意产业园D3楼420室
四川省成都市武侯区蜀都中心二期1号楼3单元15楼
武汉市洪山区佳园路创业广场7-5栋3层306室
长春市净月区生态广场伟峰资讯中心4207
新疆乌鲁木齐市高新区长春中路819号澳龙大厦B座21层2108
©北京聚通达科技股份有限公司版权所有
京ICP备07504919号-17
增值电信业务经营许可证:B1.B2-20181554
京公网安备11010502039326