我正在尝试使用Socket连接来读取远程网站上的文件。到目前为止,我的代码:
conn = new Socket;
if( conn.open( 'example.com:80' ) ) {
conn.write( 'GET /indesign-page/ HTTP/1.0' + "\n\n" );
reply = conn.read(999999);
conn.close();
} else {
alert( 'Problem connecting to server' );
}
套接字连接到example.com很好,但请求是这样的:
GET http://localhost/indesign-page/ HTTP/1.0
应该是这样的:
GET http://example.com/indesign-page/ HTTP/1.0
我已经尝试将conn.write参数更改为'GET http://example.com/indesign-page/ ...',但后来又出现了:
GET http://localhosthttp://example.com/indesign-page/ HTTP/1.0
网络服务器要求正确设置主机才能正常投放。
答案 0 :(得分:1)
您需要设置“主机”标题。
conn.write( 'GET /indesign-page/ HTTP/1.0' + "Host: example.com\r\n" + "\n\n" );
因为conn.open( 'example.com:80' )
表示找到example.com的服务器ip,然后在80端口连接该IP地址,因此Web服务器在连接之前不知道您已经解析了example.com。
答案 1 :(得分:0)
您需要使用手动套接字对象吗?在Adobe's Community Site上有一个提到已创建的FTP Script,您可以在其中调用GET或PUT到FTP服务器上的文件。
否则你使用哪个操作系统?如果你总是在Mac上,你可以使用AppleScript命令并将文件放在任何你想要的地方:
var command = 'do shell script "curl http://localhost/indesign-page"';
var response = app.doScript(command, ScriptLanguage.APPLESCRIPT_LANGUAGE);
AppleScript的优点在于您可以使用AppleScript编辑器(或脚本编辑器,如果您早于10.6)手动执行命令。