幫助中心

答卷提交后跳轉并獲取答卷數據

一、接口功能應用場(chǎng)景

在問(wèn)卷設置》跳轉設置》跳轉到指定頁(yè)面設置跳轉目標的URL,并且開(kāi)啟“POST答卷數據到該地址”的功能。就可以實(shí)現:填寫(xiě)者在提交答卷后,跳轉到這個(gè)指定的URL頁(yè)面,并且系統會(huì )同步將該填寫(xiě)者作答的數據POST到該URL頁(yè)面。

應用場(chǎng)景:在填寫(xiě)者提交答卷后,可以跳轉到用戶(hù)自己的系統頁(yè)面,并且作答信息(通過(guò)接口獲取到的)作為頁(yè)面元素顯示在自己系統頁(yè)面。如:考試問(wèn)卷如果不想使用問(wèn)卷星提供的標準成績(jì)單,可以使用該功能,自己寫(xiě)一個(gè)成績(jì)單頁(yè)面作為跳轉頁(yè)面。

二、頁(yè)面目標地址

使用頁(yè)面目標地址需要注意以下問(wèn)題:

1、該地址需保證外網(wǎng)可訪(fǎng)問(wèn)的狀態(tài);

2、該地址需要承載填寫(xiě)者提交答卷后的跳轉落地頁(yè),所以需保證合適的頁(yè)面內容;

3、數據將以表單的方式POST到該地址,需要增加開(kāi)發(fā)代碼以讀取form表單數據的content內容。

三、POST答卷數據

POST答卷數據會(huì )將每個(gè)填寫(xiě)者作答的數據,在其點(diǎn)擊“提交”時(shí)推送到“頁(yè)面目標地址”。每個(gè)填寫(xiě)者點(diǎn)擊提交,就會(huì )執行一次推送操作;

1、推送機制

1) 用戶(hù)在問(wèn)卷設置界面設置跳轉到指定頁(yè)面,并勾選“POST答卷數據到該地址”;


2) 如果需要獲取問(wèn)卷內容,可同時(shí)勾選“POST問(wèn)卷內容到該地址”。如果未顯示此選項,請聯(lián)系客服顧問(wèn)開(kāi)通權限;

3) POST答卷數據到跳轉的指定頁(yè)面的方式,與數據推送API方式只能二選一,推薦使用POST答卷數據到跳轉的指定頁(yè)面;這種方式的實(shí)時(shí)效性、穩定性更強;

用戶(hù)在提交完答卷后,問(wèn)卷星將直接跳轉到指定的頁(yè)面并將答卷數據放在POST消息體中;

跳轉到用戶(hù)指定頁(yè)面后,用戶(hù)指定頁(yè)面可以同時(shí)讀取到POST的內容;

2、數據加密

考慮到答卷數據傳輸的安全性,推送的答卷數據進(jìn)行了AES加密,加密密鑰可以在設置界面獲取到;

解密方法如下:

1)讀取推送的BASE64數據為byte[] encryptedData;

2)取AES加解密密鑰作為AES解密的KEY

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

4)取第16位后的字節數組做為待解密內容;

5)解密模式使用CBC(密碼塊鏈模式);

6)填充模式使用PKCS #7(填充字符串由一個(gè)字節序列組成,每個(gè)字節填充該字節序列的長(cháng)度);

7)使用配置好的實(shí)例化AES對象執行解密;

8)使用UTF-8的方式,讀取二進(jìn)制數組得到原始數據

示例代碼(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(填充字符串由一個(gè)字節序列組成,每個(gè)字節填充該字節序列的長(cháng)度);
  16. aes.Padding = PaddingMode.PKCS7;
  17. aes.Key = key;
  18. aes.IV = iv;
  19. var cryptoTransform = aes.CreateDecryptor();
  20. //7)使用配置好的實(shí)例化AES對象執行解密
  21. byte[] r = cryptoTransform.TransformFinalBlock(encryptedData, 0, encryptedData.Length);
  22. //8)使用UTF-8的方式,讀取二進(jìn)制數組得到原始數據
  23. return Encoding.UTF8.GetString(r);
  24. }

3、推送內容及格式

1、推送內容存儲在表單(application/x-www-form-urlencoded)的content字段中;
2、content字段的值為經(jīng)過(guò)aes加密后的base64字符串,解密后的內容包括答卷數據以及問(wèn)卷數據;

3、答卷數據:推送內容及格式與數據推送API相同,參見(jiàn):http://nt-resale.com/help/help.aspx?helpid=407&h=1

4、問(wèn)卷數據:推送內容及格式與問(wèn)卷開(kāi)放API[1000001]接口相同,詳細請咨詢(xún)客服顧問(wèn)獲取文檔;

DEMO

1、demo地址:

http://nt-resale.com/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. }
非常感謝您的耐心閱讀,請在下方提供您對本篇幫助的反饋,以便我們持續改進(jìn)本文。
已解決 未解決
長(cháng)沙冉星信息科技有限公司 版權所有    ICP證:湘B2-20220508    湘ICP備17005436號-1    湘公網(wǎng)安備 43019002000245號
網(wǎng)站數據來(lái)源于問(wèn)卷星官方數據庫    服務(wù)協(xié)議    隱私條款    舉報
99re热视频这里只精品5|亚洲国产精品成熟老女人|国产无套乱子伦精彩是|伊人久久大香线蕉综合HD高清|亚洲AV无码专区里番在线观看