java怎么拦截某个对象
297
2023-01-22
本文目录一览:
我来给你介绍一下短信接口就是短信SDK、API,以下就是我编辑的java短信接口,已经测试请求步骤。
单条短信接口:此接口为客户发送单条短信提供支持
安全接口
安全接口的数据传输经过加密、压缩,能够保障数据传输安全,如果有安全性要求,建议选用安全接口;
安全接口所接收、响应的数据,均经过AES加密,在数据加密前允许使用gzip算法压缩数据。
数据加密方式:AES;
加密算法:AES/ECB/PKCS5Padding;
压缩算法:gzip 【建议进行数据压缩】;
请求
链接
http://ip:port/inter/sendSingleSMS
参数
参数类型传输方式描述appIdStringhttp头信息传输用户Appid(必填)gzipStringhttp头信息传输是否启用GZIP压缩【非必填】
on :是encodeStringhttp头信息传输字符集【非必填】
如果不填,默认UTF-8编码集,此字符集必须与实际传输数据字符集相同mobileString1、将所有参数拼装成json串后;
2、将json串进行AES加密;
3、加密后的byte数组通过post直接传输;手机号(必填)contentString短信内容(必填)timerTimeString定时发送时间(选填,定时时间在90天之内)
格式:yyyy-MM-dd HH:mm:ss
如果不填,则为即时发送customSmsIdString自定义消息ID(选填)
最长32位extendedCodeString扩展码(选填)
最长支持12位,如果最终号码长度超长,会截取扩展码,请根据我司建议位数提交requestTimelong请求时间(必填)
格式:时间毫秒数
安全验证字段,防止同一个请求重复提交;
短信平台根据requestTime与requestValidPeriod共同判断请求是否有效,针对无效的请求,短信平台响应错误;
判断方法:请求时间 + 请求有效时间 当前时间 ? 有效 : 无效;requestValidPeriodint请求有效时间(必填)[单位:秒]
描述同上示例
1、将参数拼装成json串
{
"mobile":"15538850000",
"content":"【清华大学】 i love you ! ",
"timerTime":"2017-03-15 12:00:00",
"extendedCode":"112",
"customSmsId":"2017010709302911",
"requestTime":1490588340964,
"requestValidPeriod":30
}
2、将json串转化为UTF-8编码的byte数组
Byte[] data = json.toBytes["UTF-8"];
3、如果需要gzip压缩,则压缩数据,并放入标示,[非必需步骤]
data =gzip.com (data);
http.setHead("gzip","on");
4、通过AES加密
data = AES. encryption (secretKey,data,算法);
5、将appId放入http head
http.setHead("appId",appId);
6、通过http post方法传输
Byte[] response = http.post(url,data);
响应
参数
参数类型传输方式描述resultStringhttp头信息传输请求状态码,详见本文档《接口状态码表》
当result不是SUCCESS时,不会响应下面参数数据。mobileString传输过来的数据是加密后的byte数组手机号smsIdString消息IDcustomSmsIdString客户自定义SMSID示例
1、从http头信息获取请求状态,如果code不是SUCCESS,不用进行下面几步
String code = http.getHead("reasult");
2、从响应流获取响应数据,并解密
Byte[] data = Response.getdata();
data = AES. decryption (secretKey, data,算法);
3、如果请求信息中有压缩标示,返回的数据也是压缩过的,需要解压缩;[非必须步骤]
data = GZIP.dcom(data);
4、将数据转换成JSON串
String json = new String(data,"UTF-8");
{
"mobile":"15538850000",
"smsId":"20170392833833891100",
"customSmsId":"20170392833833891100"
接入指导
步骤一:登录亿美软通官网
步骤二:注册并获取客户标识(AppId)和客户密钥(secretKey)账号
步骤三:参照接口文档和DEMO,对接接口并测试
步骤四:测试通过,正式上线,充值使用
/**
* Deal Post Request.
*/
package com.dc.util;
import java.util.Map;
import java.util.Iterator;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.HttpException;
public class PostRequest implements java.io.Serializable {
private Map parameters;
private String url;
public PostRequest() {
}
public void setParameters(Map param) {
if (param != null)
parameters = param;
}
public Map getParameters() {
return parameters;
}
public void setUrl(String url) {
if (url != null !(url.equals("")))
this.url = url;
}
public String getUrl() {
return url;
}
public String getPost() throws java.io.IOException, HttpException {
if (url == null || url.equals("") || parameters == null)
throw new IllegalStateException(
"Invalid url or parameters in PostBean.getPost method.");
String returnData = "";
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
NameValuePair[] postData = getParams(parameters);
postMethod.getParams().setContentCharset("GBK");
postMethod.addParameters(postData);
httpClient.executeMethod(postMethod);
if (postMethod.getStatusCode() == HttpStatus.SC_OK) {
returnData = postMethod.getResponseBodyAsString();
} else {
returnData = "error: " + postMethod.getStatusLine();
}
postMethod.releaseConnection();
return returnData;
}
private NameValuePair[] getParams(Map map) {
NameValuePair[] pairs = new NameValuePair[map.size()];
Iterator iter = map.keySet().iterator();
int i = 0;
while (iter.hasNext()) {
String key = (String) iter.next();
pairs[i] = new NameValuePair(key, (String) map.get(key));
i++;
}
return pairs;
}
}
实现方法java短信接口api:
public class DCSMSender{
PostRequest pr = new PostRequest();
public static String smsUrl = DomainGlobal.SMS_URL;
private static DCSMSender instance = new DCSMSender();
public static DCSMSender getInstance() {
return instance;
}
private DCSMSender() {
}
/**
* 向指定手机号码(可多个)发送指定信息
*
* @param cellPhones 手机号
* @param msg 短信内容
* @return 成功、失败
*/
public boolean send(String[] cellPhones, String msg) {
Map param = new HashMap();
String result = "";
param.put("cellPhones", java.util.Arrays.toString(cellPhones));
param.put("msg", DcipherTrans.cipher("system", msg, true));
pr.setParameters(param);
pr.setUrl(smsUrl);
try {
result = pr.getPost();
if ("1".equals(result)) return true;
else return false;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
这是java短信接口api我项目里用到的发短信的方法。
望采纳
关于java短信接口api和java短信接口开发实例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 java短信接口api的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java短信接口开发实例、java短信接口api的信息别忘了在本站进行查找喔。版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~