如何从Illustrator脚本发出HTTP请求?

时间:2012-04-12 14:15:50

标签: scripting httprequest adobe-illustrator jsx

有没有人设法成功从Illustrator脚本(.jsx)发出HTTP请求,并愿意分享如何做?

我目前正在OS X上尝试使用CS3,但CS4-5.5也能正常运行。

我找到了一个使用Bridgetalk来利用Bridge的套接字连接的例子,但到目前为止无法使它工作。

有人提到了libcurl的包装器,并且还想到了一个简单的bash脚本。还没有找到关于如何实现的信息。

任何输入/建议/提示都将受到高度赞赏!

1 个答案:

答案 0 :(得分:1)

由于这似乎是一个真实的边缘案例,这里概述了我最终做的事情。我打算在某个时候写一篇关于我的解决方案的博客文章,但它仍然非常粗糙。

似乎 - 由于一些奇怪的原因 - AI确实没有任何可能发出HTTP请求,而大多数其他Adobe(CS)应用程序都能够这样做。但事实证明,人们可以使用名为BridgeTalk的库(随所有CS应用程序一起提供)来促进不同应用程序之间的通信。

BridgeTalk通过Adobe的Bridge应用程序(正如您可能已经猜到的那样)并启用异步(和同步,使用小技巧)执行序列化代码。

Bridge附带了一个Web套接字库,可用于向外部服务器发出请求。我的AI脚本现在通过小的自定义API和HTTP包装器,我最终使用Extendables framework中的HTTP解析器来处理响应。为简单起见,我强制要求同步请求。

例如,我最终创建的API看起来像这样(假设对象foo具有属性uuid):

function synchFoo(foo) {
    var options = {
        path  : '/api/foos/' + foo.uuid + 'sync',
        format: 'json',
        method: 'POST',
        host  : '127.0.0.1:3000',
        data  : fooDataToString(foo)
    }
    var response = bridgeHTTP.sendSynch(options);
    return JSON.parse(response.body);
}

这种方法是我唯一能够工作的方法(跨AI版本)并且仍然相当不稳定,因此不准备发布。围绕这个解决方案的项目已被放弃,所以不要屏住呼吸。