全部产品
云市场

JAVA服务端SDK集成

更新时间:2019-06-17 15:26:01

前提条件

  • 已为您的阿里云账号创建AccessKey。
  • 已从云盾人机验证控制台下载JAVA服务端SDK包。
  • 服务端开发环境为J2SE Development Kit (JDK) 1.5或以上版本。

安装SDK

  1. 在解压的SDK包中,找到aliyun-java-sdk-core-2.2.5.jar和aliyun-java-sdk-afs.jar文件。

  2. 将这两个jar包导入您的服务端工程中。

    例如,在Eclipse中,右键单击工程,选择Properties>Java Build Path>Libraries>Add External JARs,选择并添加这两个jar包。

  3. 添加成功后,您就可以在您的服务端工程中使用阿里云人机验证的JAVA SDK。

注意事项

  • 与人机验证服务端SDK相关的类都在com.aliyuncs.IAcsClient包中。
  • SDK调用接口的默认连接超时时间是3秒,读取超时时间是80秒。您可以调用带有connectTimeout和readTimeout的构造方法来自定义设置SDK调用接口的连接超时时间和读取超时时间。

初始化IClientProfile

IClientProfile是与人机验证服务端交互的接口,所有SDK的操作都需要通过IClientProfile完成。

说明:IClientProfile可以复用,建议将其设置成应用程序全局唯一。

  1. String regionid = "cn-hangzhou";
  2. String accessKeyId = "*** Provide your AccessKeyId ***";
  3. String accessKeySecret = "*** Provide your AccessKeySecret ***";
  4. // Create a new IClientProfile instance
  5. IClientProfile profile= DefaultProfile.getProfile(regionid, accessKeyId, accessKeySecret);
  6. IAcsClient client = new DefaultAcsClient(profile);
  7. DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "afs", "afs.aliyuncs.com");

调用人机验证服务端接口

IClientProfile完成后,即可调用AnalyzeNvcRequest接口,根据业务需要开发前端页面请求的处理类和对运行结果的处理方式。

  1. public void test(){
  2. AnalyzeNvcRequest request = new AnalyzeNvcRequest();
  3. request.setData("xxx");// 必填参数,由前端获取getNVCVal方法获得的值。
  4. // 通过setScoreJsonStr方法声明"服务端调用人机验证服务接口得到的返回结果"与"前端执行操作"间的映射关系,并通知验证码服务端进行二次验证授权。
  5. // 注意:前端页面必须严格按照该映射关系执行相应操作,否则将导致调用异常。
  6. // 例如,在setScoreJsonStr方法中声明"400":"SC",则当服务端返回400时,您的前端必须唤醒刮刮卡验证(SC),如果唤醒滑块验证(NC)则将导致失败。
  7. request.setScoreJsonStr("{\"200\":\"PASS\",\"400\":\"NC\",\"600\":\"SC\",\"700\":\"LC\",\"800\":\"BLOCK\"}");// 根据业务需求设置各返回结果对应的客户端处置方式。
  8. try {
  9. AnalyzeNvcResponse response = client.getAcsResponse(request);
  10. if(response.getBizCode() == 100) {
  11. System.out.println("验签通过");
  12. } else if (response.getBizCode() == 200) {
  13. System.out.println("直接通过");
  14. } else if (response.getBizCode() == 400) {
  15. System.out.println("前端弹出nc");
  16. } else if (response.getBizCode() == 600) {
  17. System.out.println("前端弹出sc");
  18. } else if (response.getBizCode() == 700) {
  19. System.out.println("前端弹出lc");
  20. } else if (response.getBizCode() == 800) {
  21. System.out.println("直接拦截");
  22. } else if (response.getBizCode() == 900) {
  23. System.out.println("验签失败");
  24. }
  25. // TODO
  26. } catch (Exception e) {
  27. e.printStackTrace();
  28. }
  29. }