我正在尝试从Adobe Illustrator脚本(此问题与JSX无关)通过BridgeTalk向使用Socket连接的本地Rails应用程序发出HTTP请求(正如您所看到的那样)错了;))。
最后设法通过获取请求,但Rails应用程序抛出错误:
ERROR bad Request-Line `GET /test.json HTTP/1.1'.
目前没有发送特殊标题 - 设置非常简单:
var connection = new Socket;
var response = '';
var host = '127.0.0.1:3000';
var path = '/test.json';
var method = 'GET';
var request = method + " " + path + " HTTP/1.1";
if (connection.open(host)) {
connection.write(request);
response = connection.read(999999);
} else {
$.writeln('Socket connection failed.');
}
connection.close();
我假设请求不正确,但我不确定预期的结果。
Rails应用程序在WEBrick上运行。
对Rails在此期望的任何帮助或提示都将不胜感激。
更新
似乎WEBrick期望在请求行末尾回车:\r\n
。
不幸的是我正在使用BridgeTalk在Bridge中执行一段代码,这要求我在上面提到的函数中使用uneval()
或toSource()
。这些似乎逃脱了反斜杠,转换
GET /test.json HTTP/1.1\r\n
到
GET /test.json HTTP/1.1\\r\\n
造成同样的错误。
有什么想法吗?
答案 0 :(得分:0)
花了一段时间才弄明白这一点,但是像往常一样 - “太多的活动部件让人难以发现问题”:
使用回车的编码版本和目的地解码来定义请求将有助于:
var request = decodeURI(method + " " + path + " HTTP/1.1%0d%0a");
然而,事实证明,正确的请求应以\n\n
而不是\r\n
结束,因此请执行以下操作:
var request = decodeURI(method + " " + path + " HTTP/1.1%0a%0a");
现在请求通过,现在更长时间抛出错误。