GPT4网站通过 HTTP 请求与指定的 API 进行交互轮训效果

28

主题

184

回帖

581

积分

管理员

积分
581
  1. // 全局变量
  2. var token = ""; // 用于保存 token
  3. var isTaskCompleted = false; // 任务完成标志
  4. var checkCount = 0; // 轮询次数

  5. // 用户信息
  6. var mobile = "84573571"; // 手机号码
  7. var password = "1woa45545ila"; // 密码
  8. var scene = 2;
  9. var terminal = 4;

  10. // API URL
  11. var loginUrl = "https://www.xzn-ai.com/api/login/account";
  12. var createSessionUrl = "https://www.xzn-ai.com/api/chatCategory/add";
  13. var getSessionListUrl = "https://www.xzn-ai.com/api/chatCategory/lists?page_type=0";
  14. var submitTaskUrl = "https://www.xzn-ai.com/api/chat/chat";

  15. // 创建 http 对象
  16. var http = new okHttp(); // 假设这是你的 http 客户端实现

  17. // 构建登录表单数据
  18. function buildPostData() {
  19.     return "code=" + encodeURIComponent('') +
  20.            "&mobile=" + encodeURIComponent(mobile) +
  21.            "&password=" + encodeURIComponent(password) +
  22.            "&scene=" + encodeURIComponent(scene) +
  23.            "&terminal=" + encodeURIComponent(terminal);
  24. }

  25. // 设置请求头
  26. function setHeaders() {
  27.     http.setHeader("Content-Type", "application/json;charset=UTF-8");
  28.     http.setHeader("token", token);
  29.     http.setHeader("Host", "www.xzn-ai.com");
  30.     http.setHeader("Accept", "application/json");
  31.     http.setHeader("User-Agent", "Mozilla/5.0...");
  32. }

  33. // 执行登录并创建新会话
  34. function performLoginAndCreateSession() {
  35.     var postData = buildPostData();
  36.     var loginResponse = http.postForm(loginUrl, postData); // 同步请求
  37.     printl("登录响应: " + loginResponse);

  38.     var responseData = JSON.parse(loginResponse);
  39.     var userData = responseData.data;
  40.     printl("登录成功!");
  41.     token = userData.token; // 保存 token
  42.     printl("Token: " + token);
  43.     setHeaders();
  44.     createSession(); // 创建会话
  45. }

  46. // 创建新会话的表单数据
  47. function buildCreateSessionData() {
  48.     return JSON.stringify({ session_type: 1 });
  49. }

  50. // 执行新建会话请求
  51. function createSession() {
  52.     var postData = buildCreateSessionData();
  53.     var sessionResponse = http.postForm(createSessionUrl, postData); // 同步请求
  54.     printl("新建会话响应: " + sessionResponse);

  55.     var responseData = JSON.parse(sessionResponse);
  56.     printl("新建会话成功!");
  57.     getSessionList(); // 获取会话列表
  58. }

  59. // 获取会话列表
  60. function getSessionList() {
  61.     var listResponse = http.get(getSessionListUrl); // 同步请求
  62.     printl("获取会话列表响应: " + listResponse);

  63.     var listData = JSON.parse(listResponse);
  64.     var sessions = listData.data.lists;

  65.     var latestSession = sessions[0];
  66.     printl("最新会话ID: " + latestSession.id);
  67.     submitTask(latestSession.id); // 提交任务
  68. }

  69. // 提交任务
  70. function submitTask(sessionId) {
  71.     printl("准备提交任务,使用的会话ID: " + sessionId);

  72.     var taskData = {
  73.         model: "volcengine-t5",
  74.         type: 1,
  75.         other_id: sessionId,
  76.         form: "“赦免”2023年感恩节幸运火鸡,为关键字,写一篇一千五百字以上的文章。"
  77.     };

  78.     var taskDataForm = Object.keys(taskData).map(function(key) {
  79.         return encodeURIComponent(key) + "=" + encodeURIComponent(taskData[key]);
  80.     }).join("&");

  81.     setHeaders();
  82.     var taskResponse = http.postForm(submitTaskUrl, taskDataForm); // 表单格式发送请求

  83.     printl("提交任务响应: " + taskResponse);

  84.     // 开始轮询获取任务状态
  85.     pollTaskStatus(sessionId, 5000); // 每5秒检查一次状态
  86. }

  87. // 轮询获取任务状态
  88. function pollTaskStatus(sessionId, interval) {
  89.     var url = "https://www.xzn-ai.com/api/chat_records/chatLog?type=1&category_id=" + sessionId + "&page_type=0";

  90.     var response = http.get(url); // 同步请求
  91.     printl("任务状态响应: " + response);

  92.     var responseData = JSON.parse(response);
  93.     printl("成功获取任务状态!");
  94.     var taskRecords = responseData.data.lists;

  95.     // 处理第一个任务记录
  96.     var record = taskRecords[0];
  97.     printl("任务 ID: " + record.id);
  98.     printl("任务内容: " + (Array.isArray(record.content) ? record.content.join("\n") : record.content));
  99.     printl("创建时间: " + record.create_time);

  100.     isTaskCompleted = true; // 设置任务完成标志
  101. }



  102. // 启动程序
  103. performLoginAndCreateSession();
复制代码


举报 回复

28

主题

184

回帖

581

积分

管理员

积分
581
通过 HTTP 请求与指定的 API 进行交互,完成登录、创建会话、获取会话列表以及提交任务并轮询任务状态的功能。下面是详细的代码说明:
  • 全局变量:
    • token: 用于保存用户登录后获得的令牌。
    • isTaskCompleted: 标记任务是否完成。
    • checkCount: 用于计数轮询次数。
  • 用户信息:
    • 包含用户的手机号码和密码,以及其他一些场景和终端信息。
  • API URL:
    • 定义了多个 API 接口的 URL,用于登录、创建会话、获取会话列表和提交任务。
  • HTTP 客户端:
    • 创建了一个 http 对象,用于发送 HTTP 请求。
  • 构建登录表单数据:
    • buildPostData 函数负责构建登录请求所需的表单数据。
  • 设置请求头:
    • setHeaders 函数设置 HTTP 请求头,包含内容类型、token 等信息。
  • 执行登录并创建新会话:
    • performLoginAndCreateSession 函数首先调用 buildPostData 函数构建表单数据,然后发起登录请求,解析响应并保存 token。接着调用 createSession 函数创建新的会话。
  • 创建新会话的表单数据:
    • buildCreateSessionData 函数返回创建会话所需的 JSON 格式数据。
    • 执行新建会话请求:
    • createSession 函数发送创建会话的请求,解析响应并继续调用 getSessionList 函数获取会话列表。
  • 获取会话列表:
    • getSessionList 函数发送请求以获取现有会话列表,并获取最新会话的 ID,随后调用 submitTask 函数提交任务。
  • 提交任务:
    • submitTask 函数构建提交任务的数据,并将其发送到指定的 API,之后开始轮询任务状态。
  • 轮询获取任务状态:
    • pollTaskStatus 函数以指定的时间间隔轮询任务状态,解析响应并输出任务相关信息,最终设置任务完成标志。
  • 启动程序:
    • 最后调用 performLoginAndCreateSession 函数启动整个流程。


举报 回复