正在使用 Extendscript for After Effects 从 Web 服务器获取 xml 内容

Fetching xml content from web server with Extendscript for After Effects

我正在尝试为 After Effects 脚本获取托管在 Web 服务器上的 XML 文件。

谁能解释一下为什么这种方法似乎不起作用?

//var xml_path = "/c/test.xml";
var xml_path = "http://transfer.proshopeurope.com/TEMP/test.xml";

function getXML(){
    var xml_file = new File(this.xml_path);

    if(xml_file.open("r")){
        var xml_string = xml_file.read();
        var xml = new XML(xml_string);
        xml_file.close();
        return xml;
    }else{
        return false;
    }
}
$.writeln(getXML());

顺便说一句,如果我使用在顶部注释掉的本地路径,它工作正常。

你不能用'new File'代替url,你需要用'Sockets':

reply = "";
conn = new Socket;

if (conn.open ("transfer.proshopeurope.com:80")) {
    // send a HTTP GET request
    conn.writeln("GET /TEMP/test.xml HTTP/1.0\r\nHost: transfer.proshopeurope.com\r\n");
    // and read the server's reply
    reply = conn.read(999999);
    conn.close();
}

这会将 return 所有的响应变成 'reply' 然后你应该使用正则表达式只得到 xml.

您不一定需要使用套接字。主要原因是套接字不支持 SSL。因此,如果您的连接是通过 SSL 进行的,则 ExtendScripts 套接字将失败。

您可以使用 system.callSystem() 进行 shell 调用。比如看this SO question中"EDIT 2"下面的代码我前段时间问过。

如需更深入的讨论,请查看 this thread on Adobe's Forums 我在其中讨论了更多细节。