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

时间:2015-07-30 14:09:09

标签: xml http adobe extendscript 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());

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

2 个答案:

答案 0 :(得分:0)

您不能将“新文件”用于网址,您需要使用“套接字”:

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();
}

这会将所有响应返回到'reply',然后你应该使用正则表达式来获取xml。

答案 1 :(得分:0)

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

您可以使用system.callSystem()进行shell调用。例如,查看" EDIT 2"下的代码。在this SO question我问了一会儿。

要进行更深入的讨论,请查看this thread on Adobe's Forums,我在那里讨论了更多细节。