J'essaie de faire une requête HTTP à partir d'un Adobe Illustrator Script (cette question n'est pas vraiment liée à JSX, cependant) via BridgeTalk à une application locale Rails en utilisant une connexion Socket (comme vous le voyez, beaucoup de choses pourraient mal se passer;)).HTTP: "ERROR bad Request-Line"
a finalement réussi à obtenir une demande à travers, mais l'application Rails génère une erreur:
ERROR bad Request-Line `GET /test.json HTTP/1.1'.
Actuellement aucun en-tête spéciaux sont envoyés - la mise en place est assez simple:
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 Je suppose que la demande est mal formulée, mais je ne suis pas sûr de ce qui est attendu.
L'application Rails s'exécute sur WEBrick.
Une aide ou un conseil sur ce que Rails attend ici, serait grandement appréciée.
Mise à jour
Il semble que WEBrick attend un retour chariot à la fin de la ligne de demande: \r\n
.
Malheureusement j'utilise BridgeTalk pour exécuter un morceau de code dans Bridge qui nécessite que j'utilise uneval()
ou toSource()
sur la fonction mentionnée ci-dessus. Ceux-ci semblent échapper les antislashes, la conversion
GET /test.json HTTP/1.1\r\n
dans
GET /test.json HTTP/1.1\\r\\n
provoquant la même erreur.
Des idées?
J'ai été bloqué sur cela pendant un moment, vous pouvez éviter les chaînes codées URL si vous ouvrez plutôt la connexion comme "BINARY", 'connection.open (hôte," BINARY ")'. A partir du Guide d'outils: 'Les séquences CRLF sont converties en LF sauf si l'encodage est défini sur BINARY.' – spencewah
Merci! Je vais essayer si j'ai une chance. – polarblau