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

您所在的位置:网站首页 问卷星能否查到提交者微信昵称 答卷提交后跳转并获取答卷数据

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

2024-07-14 22:17| 来源: 网络整理| 查看: 265

一、接口功能应用场景

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

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

二、页面目标地址

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

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

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

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

三、POST答卷数据

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

1、推送机制

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

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

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

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

跳转到用户指定页面后,用户指定页面可以同时读取到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)读取推送的BASE64数据为byte[] encryptedData; byte[] encryptedData = Convert.FromBase64String(encrypted); if (encryptedData == null || encryptedData.Length < 17) return null; //2)取AES加解密密钥作为AES解密的KEY; byte[] key = Encoding.UTF8.GetBytes(aesKey); //3) 取byte[] encryptedData的前16位做为IV; byte[] iv = encryptedData.Take(16).ToArray(); //4)取第16位后的字节数组做为待解密内容; encryptedData = encryptedData.Skip(16).ToArray(); using (var aes = new RijndaelManaged()) { //5)解密模式使用CBC(密码块链模式); aes.Mode = CipherMode.CBC; //6)填充模式使用PKCS #7(填充字符串由一个字节序列组成,每个字节填充该字节序列的长度); aes.Padding = PaddingMode.PKCS7; aes.Key = key; aes.IV = iv; var cryptoTransform = aes.CreateDecryptor(); //7)使用配置好的实例化AES对象执行解密 byte[] r = cryptoTransform.TransformFinalBlock(encryptedData, 0, encryptedData.Length); //8)使用UTF-8的方式,读取二进制数组得到原始数据 return Encoding.UTF8.GetString(r); } 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#): public partial class demo_activityredirect : System.Web.UI.Page { string aeskey = ""; string content = string.Empty; protected void Page_Load(object sender, EventArgs e) { content = Request.Form["content"]; aeskey = Request.QueryString["aes"]; Response.Write("推送的加密内容[content]:" + Receive()); Response.End(); } //接收推送消息 protected string Receive() { try { if (!string.IsNullOrEmpty(content) && !string.IsNullOrEmpty(aeskey)) { content = Wjx.Common.Encrypt.Aes.Decrypt(content, aeskey); return content; } return "读取内容为空"; } catch (Exception e) { return "出错啦!\r\n" + e.Message; } } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3