Поиск параметров для запросов HTTP PUT под IIS5.1 и ASP-classic? - PullRequest
1 голос
/ 08 июля 2009

Я пытаюсь реализовать интерфейс REST под IIS5.1 / ASP-classic (блок разработки XP-Pro). Пока что я не могу найти заклинание, необходимое для получения переменных содержимого запроса по методу PUT HTTP.

с запросом типа:

PUT http://localhost/rest/default.asp?/record/1336

Department=Sales&Name=Jonathan%20Doe%203548

как мне прочитать значения Department и Name в моем коде ASP?

Request.Form, кажется, поддерживает только запросы POST. Request.ServerVariables получает только заголовок. Request.QueryString тоже не доходит до контента ...


На основании ответов AnthonyWJones и ars я пошел по пути BinaryRead и обнаружил первую попытку ниже:

var byteCount = Request.TotalBytes;
var binContent = Request.BinaryRead(byteCount);
var myBinary = '';

var rst = Server.CreateObject('ADODB.Recordset');
rst.Fields.Append('myBinary', 201, byteCount);
rst.Open();
rst.AddNew();
rst('myBinary').AppendChunk(binContent);
rst.update();
var binaryString = rst('myBinary');
var contentString = binaryString.Value;

var parameters = {};
var pairs = HtmlDecode(contentString).split(/&/);
for(var pair in pairs) {
    var param = pairs[pair].split(/=/);
    parameters[param[0]] = decodeURI(param[1]);
}

Эта запись в блоге Дэвида Вана и функция HtmlDecode(), взятая у Энди Оукли на blogs.msdn.com, также очень помогли.

Делая это разделение и убегая вручную, я уверен, что здесь 1001 ошибка, но, по крайней мере, я снова двигаюсь. Спасибо.

Ответы [ 2 ]

0 голосов
/ 09 июля 2009

Попробуйте использовать метод BinaryRead в объекте запроса:

http://www.w3schools.com/ASP/met_binaryread.asp

Другие варианты - написать компонент сервера ASP или фильтр ISAPI:

http://www.codeproject.com/KB/asp/cookie.aspx

0 голосов
/ 09 июля 2009

К сожалению, ASP предшествует концепции REST довольно давно.

Если вы собираетесь использовать RESTFull, я бы не стал использовать данные формы в кодировке URL. Вместо этого используйте XML. Вы сможете принять тело сущности XML с: -

 Dim xml : Set xml = CreateObject("MSXML2.DOMDocument.3.0")
 xml.async = false
 xml.Load Request

В противном случае вам нужно будет использовать BinaryRead для объекта Request, а затем кропотливо преобразовывать массив байтов в текст, а затем анализировать кодировку url самостоятельно и декодировать escape-последовательности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...