JAVA调用云平台短信验证接口
2017-09-07 17:52
459 查看
1 创建子账号
1.1 功能
客户侧发起请求,云通讯平台收到请求后,返回子账户信息。
1.2 组包
构造请求URL内容:• 获得系统时间戳;
• 拼接sig字符串,格式为“主账户id + 主账户授权令牌 + 时间戳 ”;
• 使用MD5加密sig字符串;
• 拼接URL内容;
构造请求头信息 :
• 设置Accept项为“application/xml”;
• 设置 Content-Type项为“application/xml;charset=utf-8”;
• 设置Authorization 项,先拼接字符串“主账户ID + 冒号 + 时间戳”,冒号为英文格式,再将字符串进行Base64编码。
构造Body :
• 拼接XML格式字符串,字段包括应用id、子账户名称、主账户id、子账户类型、子账户状态。
1.3 代码
/** * @brief 创建子账号 * @param accountSid 主账号 * @param authToken 主账号令牌 * @param appId 应用id * @param friendlyName 申请的邮箱 * @param type 类型 * @param status 状态 * @return Httppost 协议包封装 * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public String CreateSubAccount(String accountSid, String authToken, String appId, String friendlyName, String type, String status) throws NoSuchAlgorithmException, KeyManagementException { // 返回的响应字符串 String result = ""; // 创建HttpClient CcopHttpClient chc = new CcopHttpClient(); DefaultHttpClient httpclient = chc.registerSSL("app.cloopen.com", "TLS", 8883, "https"); try { // 构造请求URL内容 String timestamp = DateUtil.dateToStr(new Date(), DateUtil.DATE_TIME_NO_SLASH); // md5(主账户Id +主账户授权令牌 + 时间戳) String sig = accountSid + authToken + timestamp; // MD5加密 EncryptUtil eu = new EncryptUtil(); String signature = eu.md5Digest(sig); String url = (new StringBuilder(hostname)).append(":").append(port) .append("/").append(softVer).append("/Accounts/").append(accountSid) .append("/SubAccounts?sig=").append(signature).toString(); // 创建HttpPost HttpPost httppost = new HttpPost(url); // 构造请求头信息 httppost.setHeader("Accept", "application/xml"); httppost.setHeader("Content-Type", "application/xml;charset=utf-8"); String src = accountSid + ":" + timestamp; // base64(主账户Id + 冒号 +时间戳) String auth = eu.base64Encoder(src); httppost.setHeader("Authorization", auth); // 构造Body String body = (new StringBuilder("<?xml version='1.0' encoding='utf-8'?><SubAccount>") .append("<appId>")).append(appId).append("</appId>") .append("<friendlyName>").append(friendlyName).append("</friendlyName>") .append("<accountSid>").append(accountSid).append("</accountSid>") .append("<type>").append(type).append("</type>") .append("<status>").append(status).append("</status></SubAccount>").toString(); BasicHttpEntity requestBody = new BasicHttpEntity(); requestBody.setContent(new ByteArrayInputStream(body.getBytes("UTF-8"))); requestBody.setContentLength(body.getBytes("UTF-8").length); httppost.setEntity(requestBody); // 执行客户端请求 HttpResponse response = httpclient.execute(httppost); // 获取响应实体信息 HttpEntity entity = response.getEntity(); if (entity != null) { result = EntityUtils.toString(entity, "UTF-8"); } // 确保HTTP响应内容全部被读出或者内容流被关闭 EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } finally{ // 关闭连接 httpclient.getConnectionManager().shutdown(); } return result; }
2 双向回拨
2.1 功能
客户侧发起请求,云通讯平台收到请求后,向两个落地电话终端发起呼叫请求,两终端接通电话后进行通话。
2.2 组包
构造请求URL内容:• 获得系统时间戳;
• 拼接sig字符串,格式为“子账户ID + 子账户授权令牌 + 时间戳 ”,
• 使用MD5加密sig字符串,
• 拼接URL内容
构造请求头信息 :
• 设置Accept项为“application/xml”;
• 设置Content-Type项为“application/xml;charset=utf-8”;
• 设置Authorization 项,先拼接字符串“子账户ID + 冒号 + 时间戳”,冒号为英文格式,再将字 符串进行Base64编码
构造Body :
• 拼接XML格式字符串,字段包括子账户id、VoIP帐号、主叫号码、被叫号码
2.3 代码
/** * @brief 双向回拨 * @param subAccountSid 子账号 * @param subToken 子账号令牌 * @param voipAccount VoIP账号 * @param from 主叫电话 * @param to 被叫电话 * @return Httppost 协议包封装 * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public String CallBack(String subAccountSid, String subToken, String voipAccount, String from, String to) throws NoSuchAlgorithmException, KeyManagementException { // 返回的响应字符串 String result = ""; // 创建HttpClient CcopHttpClient chc = new CcopHttpClient(); DefaultHttpClient httpclient = chc.registerSSL("app.cloopen.com", "TLS", 8883, "https"); try { // 构造请求URL内容 String timestamp = DateUtil.dateToStr(new Date(), DateUtil.DATE_TIME_NO_SLASH);// 时间戳 // md5(子账户Id + 子账户授权令牌 + 时间戳) String sig = subAccountSid + subToken + timestamp; // MD5加密 EncryptUtil eu = new EncryptUtil(); String signature = eu.md5Digest(sig); String url = (new StringBuilder(hostname)).append(":").append(port) .append("/").append(softVer) .append("/SubAccounts/").append(subAccountSid) .append("/Calls/Callback?sig=").append(signature).toString(); // 创建HttpPost HttpPost httppost = new HttpPost(url); // 构造请求头信息 httppost.setHeader("Accept", "application/xml"); httppost.setHeader("Content-Type", "application/xml;charset=utf-8"); String src = subAccountSid + ":" + timestamp; String auth = eu.base64Encoder(src); httppost.setHeader("Authorization", auth);// base64(子账户Id + 冒号 + 时间戳) // 构造Body String body = (new StringBuilder("<?xml version='1.0' encoding='utf-8'?><CallBack>") .append("<subAccountSid>")).append(subAccountSid) .append("</subAccountSid>").append("<voipAccount>").append(voipAccount) .append("</voipAccount>").append("<from>").append(from) .append("</from>").append("<to>").append(to) .append("</to></CallBack>").toString(); BasicHttpEntity requestBody = new BasicHttpEntity(); requestBody.setContent(new ByteArrayInputStream(body.getBytes("UTF-8"))); requestBody.setContentLength(body.getBytes("UTF-8").length); httppost.setEntity(requestBody); // 执行客户端请求 HttpResponse response = httpclient.execute(httppost); // 获取响应实体信息 HttpEntity entity = response.getEntity(); if (entity != null) { result = EntityUtils.toString(entity, "UTF-8"); } // 确保HTTP响应内容全部被读出或者内容流被关闭 EntityUtils.consume(entity); } catch (Exception e) { e.printStackTrace(); } finally{ // 关闭连接 httpclient.getConnectionManager().shutdown(); } return result; }
3 接口说明
1. 以上函数需要使用主账户或子账户鉴权,sig参数和包头中的时间戳必须一致。2. 以上函数发送Https请求,得到结果为XML格式数据。
http://docs.cloopen.com/index.php/Java
相关文章推荐
- 短信验证平台接口调用实例
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能
- 用Java调用中国网建提供的SMS短信平台接口实现向移动端发送短信
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- JAVA通过http调用验证码短信接口源码
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- Java调用WebService接口实现发送手机短信验证码功能
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用
- 短信验证平台接口调用实例