[英]Parameter retrieval for HTTP PUT requests under IIS5.1 and ASP-classic?
我正在嘗試在IIS5.1 / ASP-classic(XP-Pro開發箱)下實現REST接口。 到目前為止,我找不到在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]);
}
大衛·王(David Wang HtmlDecode()
此博客文章以及從HtmlDecode()
安迪·奧克利HtmlDecode()
Andy Oakley HtmlDecode()
提取的HtmlDecode()
函數也有很大幫助。
手動進行拆分和轉義,我確定這里有1001個bug,但至少我要再移動一次。 謝謝。
不幸的是,ASP比REST概念早了很多年。
如果您要使用RESTFull,那么我會考慮不使用url編碼的表單數據。 改用XML。 您將可以通過以下方式接受XML實體主體:
Dim xml : Set xml = CreateObject("MSXML2.DOMDocument.3.0")
xml.async = false
xml.Load Request
否則,您將需要在Request對象上使用BinaryRead,然后將字節數組費力地轉換為文本,然后解析自己編碼的網址以及對轉義序列進行解碼。
嘗試在Request對象中使用BinaryRead方法:
http://www.w3schools.com/ASP/met_binaryread.asp
其他選項是編寫ASP服務器組件或ISAPI篩選器:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.