2009-07-08 78 views
1

我試圖在IIS5.1/ASP-classic(XP-Pro開發框)下實現REST接口。到目前爲止,我無法找到在PUT HTTP方法下檢索請求內容變量所需的咒語。在IIS5.1和ASP-classic下HTTP PUT請求的參數檢索?

有了這樣的請求:

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

This blog post by David WangHtmlDecode()函數取自博客.msdn.com上的Andy Oakley,也有很大幫助。

做這個分裂和手工逃脫,我敢肯定有一個1001錯誤在這裏,但至少我再次移動。謝謝。

回答

0

不幸的是ASP早於REST概念已經有好幾年了。

如果你要去RESTFull那麼我會考慮不使用URL編碼的表單數據。改用XML。您將能夠接受一個XML實體體: -

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

否則,你將需要使用Request對象上了BinaryRead,然後費力地轉換爲字節數組文本,然後解析編碼自己的URL與解碼一起轉義序列。

+0

不幸的是,所述主體的內容格式是非常固定的。看起來我必須追查二進制讀取。 – aczarnowski 2009-07-08 21:37:55