2015-06-24 5 views
1

Я пытаюсь сделать HTTP-запросы от Illustrator ExtendScript (через BridgeTalk) и по большей части работает. Однако документации по использованию HttpConnection не существует, и я пытаюсь выяснить, как установить http-заголовки. Объект HttpConnection имеет свойство requestheaders и responseheaders, поэтому я подозреваю, что это возможно.Как настроить HTTP-заголовки в Adobe Illustrator ExtendScript при использовании объекта BridgeTalk HttpConnection?

По умолчанию отправители отправляются с заголовком Content-Type «text/html», и я хотел бы переопределить его, чтобы я мог использовать либо «application/x-www-form-urlencoded», либо «многочастному/форм-данных».

Вот то, что я до сих пор:

var http = function (callback) { 

    var bt = new BridgeTalk(); 
    bt.target = 'bridge' ; 

    var s = ''; 
    s += "if (!ExternalObject.webaccesslib) {\n"; 
    s += " ExternalObject.webaccesslib = new ExternalObject('lib:webaccesslib');\n"; 
    s += "}\n"; 
    s += "var html = '';\n"; 
    s += "var http = new HttpConnection('http://requestb.in/1mo0r1z1');\n"; 
    s += "http.method = 'POST';\n"; 
    s += "http.requestheaders = 'Content-Type, application/x-www-form-urlencoded'\n"; 
    s += "http.request = 'abc=123&def=456';\n"; 
    s += "var c=0,t='';for(var i in http){t+=(i+':'+http[i]+'***');c++;}t='BEFORE('+c+'):'+t;alert(t);\n"; // Debug: to see what properties and values exist on the http object 
    s += "http.response = html;\n"; 
    s += "http.execute() ;\n"; 
    s += "http.response;\n"; 
    s += "var t='AFTER:';for(var i in http){t+=(i+':'+http[i]+'***');}alert(t);\n"; // Debug: to see what properties and values have been set after executing 

    bt.body = s; 

    bt.onResult = function (evt) { 
     callback(evt); 
    }; 

    bt.onError = function (evt) { 
     callback(evt); 
    }; 

    bt.send(); 
}; 

Things отметить:

  1. Если я попробовать установить свойства requestheaders как в моем коде выше, запрос не выполняется. Если я прокомментирую это, запрос будет успешным. Значение по умолчанию для запросов не определено.
  2. Изучив объект http после успешного запроса, вы увидите свойства reponseheaders, которые должны быть установлены: «Соединение, keep-alive, Content-Length, 2, Content-Type, text/html; charset = utf-8, Date, Wed, 24 Jun 2015 09:45:40 GMT, Server, gunicorn/18.0, Sponsored-By, , 1.1 vegur ". Перед выполнением запроса учетные узлы устанавливаются как неопределенные.

Если кто-нибудь может помочь мне установить заголовки запроса (в частности заголовок Content-Type), я буду вечно благодарен!

ответ

1

Решено!

Ключ для установки заголовка типа содержимого, чтобы установить свойство http.mime следующим образом:

s += "http.mime = 'application/x-www-form-urlencoded';\n"; 

Кроме того, для полноты, вы можете добавить свои собственные заголовки следующим образом:

s += "http.requestheaders = ['My-Sample-Header', 'some-value'];\n"; 

(Получается, что заголовки представляют собой массив, который принимает формат [key1, value1, key2, value2, .......])