|
|
AIWROKÈí¼þJSONÇëÇóÍêÕûʾÀý
- /**
- * AIWROK HTTPÇëÇóÍêÕûʾÀý
- * ¹¦ÄÜ£ºGET/POSTÇëÇó¡¢³¬Ê±¿ØÖÆ¡¢×Ô¶¯ÖØÊÔ¡¢JSON½âÎö
- * ÊÊÓ㺰²×¿ Rhino ES5 ÒýÇæ
- */
- importClass(java.net.HttpURLConnection);
- importClass(java.net.URL);
- importClass(java.io.BufferedReader);
- importClass(java.io.InputStreamReader);
- importClass(java.io.OutputStreamWriter);
- // ======================== ¹¤¾ßº¯Êý ========================
- /**
- * ÊÖ¶¯¹¹½¨ JSON£¨Rhino »·¾³Ï JSON.stringify ¿ÉÄܲ»¿ÉÓã©
- */
- function toJson(obj) {
- var parts = [];
- for (var key in obj) {
- // Rhino ES5 ϲ»Óà hasOwnProperty£¨Java °ü×°ÀàÐÍûÓÐÕâ¸ö·½·¨£©
- var val = "" + obj[key];
- if (typeof obj[key] === "string" || obj[key] instanceof java.lang.String) {
- val = val.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
- parts.push('"' + key + '":"' + val + '"');
- } else {
- parts.push('"' + key + '":' + val);
- }
- }
- return "{" + parts.join(",") + "}";
- }
- /**
- * ÊÖ¶¯½âÎö JSON£¨Ê¹Óà org.json.JSONObject£©
- */
- function parseJson(jsonStr) {
- try {
- var jsonObj = new org.json.JSONObject(jsonStr);
- return jsonObj;
- } catch (e) {
- printl("[parseJson] ½âÎöʧ°Ü: " + e.message);
- return null;
- }
- }
- // ======================== HTTP ¿Í»§¶Ë ========================
- /**
- * HTTP GET ÇëÇó
- * @param {string} url - ÇëÇóµØÖ·
- * @param {object} headers - ×Ô¶¨ÒåÇëÇóÍ·
- * @param {number} timeout - ³¬Ê±Ê±¼ä£¨ºÁÃ룩
- * @returns {object} {code, body, headers, success}
- */
- function httpGet(url, headers, timeout) {
- headers = headers || {};
- timeout = timeout || 10000;
- try {
- var conn = new URL(url).openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(timeout);
- conn.setReadTimeout(timeout);
- conn.setUseCaches(false);
- // ÉèÖÃĬÈÏ User-Agent
- conn.setRequestProperty("User-Agent", "AIWROK/1.0");
- conn.setRequestProperty("Content-Type", "application/json");
- // ÉèÖÃ×Ô¶¨ÒåÇëÇóÍ·
- for (var key in headers) {
- conn.setRequestProperty(key, headers[key]);
- }
- var code = conn.getResponseCode();
- var is = (code >= 200 && code < 300) ? conn.getInputStream() : conn.getErrorStream();
- if (!is) {
- conn.disconnect();
- return { code: code, body: "", success: false };
- }
- var reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- var sb = new java.lang.StringBuilder();
- var line;
- while ((line = reader.readLine()) != null) {
- sb.append(line);
- }
- reader.close();
- conn.disconnect();
- return { code: code, body: sb.toString(), success: code >= 200 && code < 300 };
- } catch (e) {
- return { code: -1, body: "", success: false, error: e.message };
- }
- }
- /**
- * HTTP POST ÇëÇó
- * @param {string} url - ÇëÇóµØÖ·
- * @param {object} data - POST Êý¾Ý¶ÔÏó
- * @param {object} headers - ×Ô¶¨ÒåÇëÇóÍ·
- * @param {number} timeout - ³¬Ê±Ê±¼ä£¨ºÁÃ룩
- * @returns {object} {code, body, headers, success}
- */
- function httpPost(url, data, headers, timeout) {
- headers = headers || {};
- timeout = timeout || 10000;
- try {
- var jsonStr = toJson(data);
- var bodyBytes = new java.lang.String(jsonStr).getBytes("UTF-8");
- var conn = new URL(url).openConnection();
- conn.setRequestMethod("POST");
- conn.setDoOutput(true);
- conn.setDoInput(true);
- conn.setConnectTimeout(timeout);
- conn.setReadTimeout(timeout);
- conn.setUseCaches(false);
- conn.setRequestProperty("User-Agent", "AIWROK/1.0");
- conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
- conn.setRequestProperty("Content-Length", "" + bodyBytes.length);
- for (var key in headers) {
- conn.setRequestProperty(key, headers[key]);
- }
- var os = conn.getOutputStream();
- os.write(bodyBytes);
- os.flush();
- os.close();
- var code = conn.getResponseCode();
- var is = (code >= 200 && code < 300) ? conn.getInputStream() : conn.getErrorStream();
- if (!is) {
- conn.disconnect();
- return { code: code, body: "", success: false };
- }
- var reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- var sb = new java.lang.StringBuilder();
- var line;
- while ((line = reader.readLine()) != null) {
- sb.append(line);
- }
- reader.close();
- conn.disconnect();
- return { code: code, body: sb.toString(), success: code >= 200 && code < 300 };
- } catch (e) {
- return { code: -1, body: "", success: false, error: e.message };
- }
- }
- /**
- * ´øÖØÊÔµÄÇëÇó£¨×Ô¶¯ÖØÊÔʧ°ÜµÄÇëÇó£©
- */
- function httpGetWithRetry(url, headers, timeout, retryCount) {
- retryCount = retryCount || 3;
- for (var i = 0; i < retryCount; i++) {
- printl("[ÖØÊÔ " + (i + 1) + "/" + retryCount + "] GET " + url);
- var result = httpGet(url, headers, timeout);
- if (result.success) return result;
- sleep.millisecond(1000 * (i + 1)); // µÝÔöµÈ´ý
- }
- printl("[ÖØÊÔʧ°Ü] " + url);
- return null;
- }
- // ======================== ÑÝʾ ========================
- function demo() {
- printl("¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
- printl("¨U AIWROK HTTPÇëÇóÍêÕûʾÀý - ÑÝʾ ¨U");
- printl("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
- sleep.millisecond(600);
- // ---- ÑÝʾ 1: GET ÇëÇó ----
- printl("\n🌐 [1/5] GET ÇëÇó");
- sleep.millisecond(400);
- printl(" ÇëÇó: https://httpbin.org/get?name=AIWROK&version=1.0");
- var getStart = new Date().getTime();
- var getResult = httpGet("https://httpbin.org/get?name=AIWROK&version=1.0");
- var getCost = new Date().getTime() - getStart;
- printl(" ״̬Âë: " + getResult.code);
- sleep.millisecond(150);
- printl(" ³É¹¦: " + getResult.success + " (ÓÃʱ " + getCost + "ms)");
- sleep.millisecond(150);
- if (getResult.body) {
- printl(" ÏìÓ¦: " + getResult.body.substring(0, Math.min(180, getResult.body.length())) + "...");
- }
- sleep.millisecond(1200);
- // ---- ÑÝʾ 2: POST ÇëÇó ----
- printl("\n📤 [2/5] POST ÇëÇó");
- sleep.millisecond(400);
- var postData = { name: "AIWROK", type: "automation", version: "1.0" };
- printl(" Ìá½»Êý¾Ý: " + toJson(postData));
- var postStart = new Date().getTime();
- var postResult = httpPost("https://httpbin.org/post", postData);
- var postCost = new Date().getTime() - postStart;
- printl(" ״̬Âë: " + postResult.code);
- sleep.millisecond(150);
- printl(" ³É¹¦: " + postResult.success + " (ÓÃʱ " + postCost + "ms)");
- sleep.millisecond(150);
- if (postResult.body) {
- printl(" ÏìÓ¦: " + postResult.body.substring(0, Math.min(180, postResult.body.length())) + "...");
- }
- sleep.millisecond(1200);
- // ---- ÑÝʾ 3: ´ø×Ô¶¨ÒåÇëÇóÍ· ----
- printl("\n🏷️ [3/5] ´ø×Ô¶¨ÒåÇëÇóÍ·");
- sleep.millisecond(400);
- var customHeaders = { "Authorization": "Bearer test-token-12345", "X-Custom-Header": "my-custom-value" };
- printl(" ÇëÇóÍ·: Authorization + X-Custom-Header");
- var headerStart = new Date().getTime();
- var headerResult = httpGet("https://httpbin.org/headers", customHeaders);
- var headerCost = new Date().getTime() - headerStart;
- printl(" ״̬Âë: " + headerResult.code + " (ÓÃʱ " + headerCost + "ms)");
- sleep.millisecond(1200);
- // ---- ÑÝʾ 4: ´íÎóÇëÇó´¦Àí ----
- printl("\n⚠️ [4/5] ´íÎóÇëÇó´¦Àí");
- sleep.millisecond(400);
- printl(" ÇëÇóÒ»¸ö²»´æÔÚµÄÒ³Ãæ...");
- var errorStart = new Date().getTime();
- var errorResult = httpGet("https://httpbin.org/status/404");
- var errorCost = new Date().getTime() - errorStart;
- printl(" ״̬Âë: " + errorResult.code);
- sleep.millisecond(150);
- printl(" ³É¹¦: " + errorResult.success + " (ÓÃʱ " + errorCost + "ms)");
- sleep.millisecond(1200);
- // ---- ÑÝʾ 5: ³¬Ê±¿ØÖÆ ----
- printl("\n⏱️ [5/5] ³¬Ê±¿ØÖÆ (3Ãë)");
- sleep.millisecond(400);
- printl(" ÇëÇó»áÑÓ³Ù 5 ÃëµÄ½Ó¿Ú£¬³¬Ê±ÉèÖà 3 Ãë...");
- var timeoutStart = new Date().getTime();
- var timeoutResult = httpGet("https://httpbin.org/delay/5", null, 3000);
- var timeoutCost = new Date().getTime() - timeoutStart;
- printl(" ÓÃʱ: " + timeoutCost + " ms");
- sleep.millisecond(150);
- if (timeoutResult && timeoutResult.success) {
- printl(" ✓ ÇëÇó³É¹¦ ״̬Âë: " + timeoutResult.code);
- } else if (timeoutResult && timeoutResult.code === -1 && timeoutCost >= 3000) {
- printl(" ⏱️ ´¥·¢³¬Ê±£¨Ô¤ÆÚÐÐΪ£© ״̬Âë: -1");
- } else {
- printl(" ✗ ÇëÇóʧ°Ü ״̬Âë: " + (timeoutResult ? timeoutResult.code : "-1"));
- }
- sleep.millisecond(600);
- printl("\n¨X¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨[");
- printl("¨U È«²¿ÑÝʾÍê³É£¡ ¨U");
- printl("¨^¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨T¨a");
- }
- demo();
¸´ÖÆ´úÂë
|
|