2012-04-12 2 views
1

Hat es jemand geschafft, erfolgreich HTTP-Anfragen von einem Illustrator-Skript (.jsx) zu stellen und bereit zu teilen, wie?Wie werden HTTP-Anfragen vom Illustrator-Skript erstellt?

Ich experimentiere gerade mit CS3 unter OS X, aber CS4-5.5 würde auch funktionieren.

Ich habe ein Beispiel mit Bridgetalk gefunden, um die Socket-Verbindung von Bridge zu verwenden, aber es konnte bisher nicht funktionieren.

Jemand erwähnte eine Wrapper um libcurl und auch ein einfaches Bash-Skript kam mir in den Sinn. Ich habe noch nicht viele Informationen darüber gefunden, wie ich beides erreichen kann.

Alle Eingang/Beratung/Hinweis würde sehr geschätzt werden!

Antwort

1

Wie es scheint, dass dies ein echter Randfall ist, hier eine Übersicht dessen, was ich getan habe. Ich plane irgendwann einen Blog-Post über meine Lösung zu schreiben, aber es ist immer noch sehr rauh an den Rändern.

Es scheint, dass - aus irgendeinem seltsamen Grund - KI keine Möglichkeit hat, HTTP-Anfragen zu stellen, während die meisten anderen Adobe (CS) -Anwendungen dazu in der Lage sind. Es stellt sich jedoch heraus, dass man eine Bibliothek namens BridgeTalk (die mit allen CS-Apps geliefert wird) verwenden kann, um die Kommunikation zwischen verschiedenen Anwendungen zu erleichtern.

BridgeTalk läuft durch die Adobe Bridge-App (wie Sie vielleicht erraten haben) und aktiviert asynchrone (und synchrone, mit einem kleinen Trick) Ausführung von serialisiertem Code.

Bridge wird mit einer Web-Socket-Bibliothek geliefert, mit der Anfragen an externe Server gestellt werden können. Mein AI-Skript durchläuft nun kleine benutzerdefinierte API- und HTTP-Wrapper, und ich verwendete den HTTP-Parser von Extendables framework, um die Antwort zu verarbeiten. Der Einfachheit halber erzwinge ich synchrone Anfragen.

Als Beispiel die API ich schaffen sieht aus wie etwas, am Ende (vorausgesetzt, ein Objekt foo mit einem Attribut uuid):

function synchFoo(foo) { 
    var options = { 
     path : '/api/foos/' + foo.uuid + 'sync', 
     format: 'json', 
     method: 'POST', 
     host : '127.0.0.1:3000', 
     data : fooDataToString(foo) 
    } 
    var response = bridgeHTTP.sendSynch(options); 
    return JSON.parse(response.body); 
} 

Dieser Ansatz das einzige, was ich zur Arbeit bekommen konnte (über Versionen von AI) und ist immer noch ziemlich instabil und daher nicht bereit für die Veröffentlichung. Das Projekt um diese Lösung wurde jedoch aufgegeben, also halten Sie nicht die Luft an.

+0

FYI, ich kam vor kurzem für die asynch Fall: https://gist.github.com/mericson/6509997 – David

+0

Ist dies Ihr Blog Post? Wenn nicht, ist es ein ähnliches: http://selfdocumentingcode.blogspot.com/2009/05/using-adobe-bridgetalk-synchronously.html – David

+0

Nein, nicht meins - sorry. Aber ich glaube, ich habe es während meiner Arbeit als Quelle benutzt. – polarblau

Verwandte Themen