我正在尝试在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());
顺便说一下,如果我使用顶部注释掉的本地路径,它的工作正常。
答案 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,我在那里讨论了更多细节。