Я пытаюсь сделать HTTP-запрос из сценария Adobe Illustrator (этот вопрос не связан с JSX, хотя) через BridgeTalk в локальное приложение Rails, используя соединение Socket (как вы видите - много, что может пойти не так;)).HTTP: «ERROR bad Request-Line»
Наконец удалось получить запрос через, но приложение 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();
I Предполагая, что запрос неквалифицирован, но я не уверен, что ожидается.
Приложение Rails работает на WEBrick.
Любая помощь или подсказка о том, что Rails ожидает здесь, будем весьма благодарны.
Update
Кажется, что WEBrick ожидает возврат каретки в конце строки запроса: \r\n
.
К сожалению, я использую BridgeTalk для выполнения фрагмента кода в Bridge, который требует, чтобы я использовал uneval()
или toSource()
о функции, упомянутой выше. Они, кажется, чтобы избежать обратных косых черт, превращая
GET /test.json HTTP/1.1\r\n
в
GET /test.json HTTP/1.1\\r\\n
вызывает ту же ошибку.
Любые идеи?
Я был замечен на этом некоторое время, вы можете избежать строк с кодировкой URL, если вместо этого вы открываете соединение как «BINARY», «connection.open (host,« BINARY »)». Из руководства по инструментам: 'CRLF-последовательности преобразуются в LF, если кодировка не установлена в BINARY.' – spencewah
Спасибо! Я дам это, если у меня появится шанс. – polarblau