Как установить заголовки http в Adobe Illustrator ExtendScript при использовании объекта BridgeTalk HttpConnection?

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

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

Вот что у меня так далеко:

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();
};

Что следует отметить:

  1. Если я попытаюсь установить свойства requestheaders, как в моем коде выше, запрос не будет выполнен. Если я закомментирую это, запрос будет выполнен успешно. Значение по умолчанию для заголовков запроса не определено.
  2. Изучая объект http после успешного запроса, показывает свойства reponseheaders, которые должны быть установлены на: "Connection, keep-alive,Content-Length, 2,Content-Type, text/html; charset=utf-8,Date, Wed, 24 Июнь 2015 09:45:40 GMT, сервер, gunicorn / 18.0, Sponsored-By, https://www.runscope.com,Via, 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";

(Оказывается, заголовки - это массив, который принимает формат [ключ1, значение1, ключ2, значение2, .......])

Другие вопросы по тегам