如何在Illustrator脚本中发起HTTP请求?求最新可行实现方案
Illustrator 脚本实现HTTP请求的2024年可行方案
目前2022年及之后发布的Illustrator版本,分别适配传统ExtendScript(JSX)和新版UXP两种脚本体系,对应可行的HTTP请求实现方案如下:
传统ExtendScript(JSX)适配方案
如果还在使用旧版JSX脚本,可通过调用系统预装的curl命令行工具中转实现请求,不需要额外安装依赖:
- Windows环境(Win10 1809及以上版本已预装curl):通过WScript.Shell调用curl命令,将请求结果写入临时文件后读取即可,示例代码:
// 拼接curl命令,输出结果到临时文件 var requestCmd = 'curl -X GET "https://你的请求地址" -o "C:/temp/ai_http_resp.txt"'; var shell = new ActiveXObject("WScript.Shell"); // 第二个参数0表示后台执行,第三个参数true表示等待命令执行完成再继续 shell.Run(requestCmd, 0, true); // 读取请求返回结果 var respFile = File("C:/temp/ai_http_resp.txt"); respFile.open("r"); var responseContent = respFile.read(); respFile.close(); respFile.remove(); // 用完删除临时文件
- Mac环境:直接通过Illustrator内置的
doShellScript方法调用系统curl,不需要处理临时文件,可直接拿到返回结果,示例代码:
var requestCmd = 'curl -X GET "https://你的请求地址"'; var responseContent = app.doShellScript(requestCmd);
注意:该方案需要提前处理请求参数的特殊字符转义,避免命令执行出错,适合小体量的接口请求场景。
UXP 脚本方案(推荐,适配Illustrator 2022及以上版本)
UXP是Adobe目前官方主推的新一代扩展开发体系,原生支持标准fetch API,不需要中转,是长期稳定的解决方案:
- 用法和前端标准fetch几乎一致,示例代码如下:
async function sendHttpRequest() { try { const response = await fetch("https://你的请求地址", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ testKey: "testValue" }) }); const result = await response.json(); // 处理返回结果 console.log(result); } catch (error) { console.error("请求出错:", error); } }
注意:需要在UXP扩展的manifest.json配置文件中添加网络权限声明:"requiredPermissions": {"network": "allow"},否则会触发权限拦截导致请求失败。
内容的提问来源于stack exchange,提问作者J Lind
相关产品推荐
相关产品推荐

