簡體   English   中英

在IIS5.1和ASP-classic下獲取HTTP PUT請求的參數?

[英]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

如何將DepartmentName值讀取到我的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篩選器:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM