HTTP:";错误错误请求行“;
我试图通过BridgeTalk从Adobe Illustrator脚本(尽管这个问题与JSX无关)向本地Rails应用程序发出HTTP请求,该应用程序使用套接字连接(如您所见,可能会出现很多错误;) 终于成功地通过了请求,但Rails应用程序抛出了一个错误:HTTP:";错误错误请求行“;,http,escaping,extendscript,Http,Escaping,Extendscript,我试图通过BridgeTalk从Adobe Illustrator脚本(尽管这个问题与JSX无关)向本地Rails应用程序发出HTTP请求,该应用程序使用套接字连接(如您所见,可能会出现很多错误;) 终于成功地通过了请求,但Rails应用程序抛出了一个错误: ERROR bad Request-Line `GET /test.json HTTP/1.1'. 目前没有发送特殊的头文件-设置非常简单: var connection = new Socket; var response = ''
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
进入
导致相同的错误
有什么想法吗?我花了一段时间才弄明白,但和往常一样——“运动部件太多,很难发现问题”: 使用编码版本的回车和目的地解码定义请求将有助于:
var request = decodeURI(method + " " + path + " HTTP/1.1%0d%0a");
然而,一个正确的请求应该以\n\n
而不是\r\n
结尾,所以要这样做:
var request = decodeURI(method + " " + path + " HTTP/1.1%0a%0a");
现在请求通过了,现在抛出错误的时间更长了。我为此挂了一段时间,如果您改为以“二进制”打开连接,
connection.open(host,“BINARY”)
,则可以避免URL编码的字符串。从工具指南:CRLF序列转换为LFs,除非编码设置为二进制。
谢谢!如果有机会,我会试一试的。
var request = decodeURI(method + " " + path + " HTTP/1.1%0a%0a");