答卷提交后跳转并获取答卷数据

一、接口功能应用场景

在问卷设置》跳转设置》跳转到指定页面设置跳转目标的URL,并且开启“POST答卷数据到该地址”的功能。就可以实现:填写者在提交答卷后,跳转到这个指定的URL页面,并且系统会同步将该填写者作答的数据POST到该URL页面。

应用场景:在填写者提交答卷后,可以跳转到用户自己的系统页面,并且作答信息(通过接口获取到的)作为页面元素显示在自己系统页面。如:考试问卷如果不想使用问卷星提供的标准成绩单,可以使用该功能,自己写一个成绩单页面作为跳转页面。

二、页面目标地址

使用页面目标地址需要注意以下问题:

1、该地址需保证外网可访问的状态;

2、该地址需要承载填写者提交答卷后的跳转落地页,所以需保证合适的页面内容;

3、数据将以表单的方式POST到该地址,需要增加开发代码以读取form表单数据的content内容。

三、POST答卷数据

POST答卷数据会将每个填写者作答的数据,在其点击“提交”时推送到“页面目标地址”。每个填写者点击提交,就会执行一次推送操作;

1、推送机制

1) 用户在问卷设置界面设置跳转到指定页面,并勾选“POST答卷数据到该地址”;


2) 如果需要获取问卷内容,可同时勾选“POST问卷内容到该地址”。如果未显示此选项,请联系客服顾问开通权限;

3) POST答卷数据到跳转的指定页面的方式,与数据推送API方式只能二选一,推荐使用POST答卷数据到跳转的指定页面;这种方式的实时效性、稳定性更强;

用户在提交完答卷后,问卷星将直接跳转到指定的页面并将答卷数据放在POST消息体中;

跳转到用户指定页面后,用户指定页面可以同时读取到GET和POST的内容;

2、数据加密

考虑到答卷数据传输的安全性,推送的答卷数据进行了AES加密,加密密钥可以在设置界面获取到;

解密方法如下:

1)读取推送的BASE64数据为byte[] encryptedData;

2)取AES加解密密钥作为AES解密的KEY

3) 取byte[] encryptedData的前16位做为IV;

4)取第16位后的字节数组做为待解密内容;

5)解密模式使用CBC(密码块链模式);

6)填充模式使用PKCS #7(填充字符串由一个字节序列组成,每个字节填充该字节序列的长度);

7)使用配置好的实例化AES对象执行解密;

8)使用UTF-8的方式,读取二进制数组得到原始数据

示例代码(C#)

  1. //1)读取推送的BASE64数据为byte[] encryptedData;
  2. byte[] encryptedData = Convert.FromBase64String(encrypted);
  3. if (encryptedData == null || encryptedData.Length < 17)
  4. return null;
  5. //2)取AES加解密密钥作为AES解密的KEY;
  6. byte[] key = Encoding.UTF8.GetBytes(aesKey);
  7. //3) 取byte[] encryptedData的前16位做为IV;
  8. byte[] iv = encryptedData.Take(16).ToArray();
  9. //4)取第16位后的字节数组做为待解密内容;
  10. encryptedData = encryptedData.Skip(16).ToArray();
  11. using (var aes = new RijndaelManaged())
  12. {
  13. //5)解密模式使用CBC(密码块链模式);
  14. aes.Mode = CipherMode.CBC;
  15. //6)填充模式使用PKCS #7(填充字符串由一个字节序列组成,每个字节填充该字节序列的长度);
  16. aes.Padding = PaddingMode.PKCS7;
  17. aes.Key = key;
  18. aes.IV = iv;
  19. var cryptoTransform = aes.CreateDecryptor();
  20. //7)使用配置好的实例化AES对象执行解密
  21. byte[] r = cryptoTransform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
  22. //8)使用UTF-8的方式,读取二进制数组得到原始数据
  23. return Encoding.UTF8.GetString(r);
  24. }

3、推送内容及格式

1、推送内容存储在表单(application/x-www-form-urlencoded)的content字段中;
2、content字段的值为经过aes加密后的base64字符串,解密后的内容包括答卷数据以及问卷数据;

3、答卷数据:推送内容及格式与数据推送API相同,参见:https://www.wjx.cn/help/help.aspx?helpid=407&h=1

4、问卷数据:推送内容及格式与问卷开放API[1000001]接口相同,详细请咨询客服顾问获取文档;

DEMO

1、demo地址:

https://www.wjx.cn/demo/activityredirect.aspx?aes=822861f9c5114dc2bda214cd9567d0dc注:红色部分为AES解密密钥

2、示例代码(C#):

  1. public partial class demo_activityredirect : System.Web.UI.Page
  2. {
  3. string aeskey = "";
  4. string content = string.Empty;
  5. protected void Page_Load(object sender, EventArgs e)
  6. {
  7. content = Request.Form["content"];
  8. aeskey = Request.QueryString["aes"];
  9. Response.Write("推送的加密内容[content]:" + Receive());
  10. Response.End();
  11. }
  12. //接收推送消息
  13. protected string Receive()
  14. {
  15. try
  16. {
  17. if (!string.IsNullOrEmpty(content) && !string.IsNullOrEmpty(aeskey))
  18. {
  19. content = Wjx.Common.Encrypt.Aes.Decrypt(content, aeskey);
  20. return content;
  21. }
  22. return "读取内容为空";
  23. }
  24. catch (Exception e)
  25. {
  26. return "出错啦!\r\n" + e.Message;
  27. }
  28. }
  29. }
非常感谢您的耐心阅读,请在下方提供您对本篇帮助的反馈,以便我们持续改进本文。
已解决 未解决
长沙冉星信息科技有限公司 版权所有    ICP证:湘B2-20170058    湘ICP备17005436号-1    湘公网安备 43019002000245号       举报
网站数据来源于问卷星官方数据库  服务协议  隐私条款