虚拟机 目录,为Android应用集成SDK"/>
android sdk 虚拟机 目录,为Android应用集成SDK
调用SDK接口
步骤1:导入包
import com.alibaba.wireless.security.jaq.JAQException;
import com.alibaba.wireless.security.jaq.avmp.IJAQAVMPSignComponent;
import com.alibaba.wireless.security.open.SecurityGuardManager;
import com.alibaba.wireless.security.open.avmp.IAVMPGenericComponent;
步骤2:初始化
接口定义:boolean initialize();
功能:初始化SDK。
接口参数:无。
返回值:Boolean类型。初始化成功返回true,失败返回false。
示例代码
IJAQAVMPSignComponent jaqVMPComp = SecurityGuardManager.getInstance(getApplicationContext()).getInterface(IJAQAVMPSignComponent.class);
boolean result = jaqVMPComp.initialize();
步骤3:签名请求数据
接口定义:byte[] avmpSign(int signType, byte[] input);
功能:使用avmp技术对input的数据进行签名处理,并且返回签名串。
接口参数
名称
类型
是否必须
描述
signType
int
是
签名使用的算法。目前是固定值,填写3。
input
byte[]
否
待签名的数据,一般是整个请求体(request body)。
说明 如果请求体为空(例如POST请求的body为空、或者GET请求),则填写空对象null或空字符串的Bytes值(例如,"".getBytes("UTF-8"))。
返回值:byte[]类型,返回签名串。
示例代码:客户端向服务器端发送数据时,需要调用avmpSign接口对整个body数据进行签名处理,所得到的签名串就是wToken。
int VMP_SIGN_WITH_GENERAL_WUA2 = 3;
String request_body = "i am the request body, encrypted or not!";
byte[] result = jaqVMPComp.avmpSign(VMP_SIGN_WITH_GENERAL_WUA2, request_body.getBytes("UTF-8"));
String wToken = new String(result, "UTF-8");
Log.d("wToken", wToken);
步骤4:将wToken放进协议头
在HttpURLConnection类的对象中添加wToken字段的内容。
示例代码
String request_body = "i am the request body, encrypted or not!";
URL url = new URL("");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
// set wToken info to header
conn.setRequestProperty("wToken", wToken);
OutputStream os = conn.getOutputStream();
// set request body info
byte[] requestBody = request_body.getBytes("UTF-8");
os.write(requestBody);
os.flush();
os.close();
步骤5:发送数据到服务器
将修改好协议头的数据发送到App自有服务器,中间会由Anti-Bot截获,并通过解析wToken进行风险识别。
警告 被签名的请求体应该与客户端实际发送的请求体完全一致。完全一致的含义包括请求体中字符串的编码格式、空格、特殊字符以及参数的顺序等均一致,否则将导致签名验证失败。
更多推荐
android sdk 虚拟机 目录,为Android应用集成SDK
发布评论