代码之家  ›  专栏  ›  技术社区  ›  aczarnowski

IIS5.1和ASP Classic下HTTP PUT请求的参数检索?

  •  1
  • aczarnowski  · 技术社区  · 15 年前

    我正在尝试在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]);
    }
    

    This blog post by David Wang 和一个 HtmlDecode() AndyOakley在blogs.msdn.com上的功能也起了很大作用。

    我确信这里有1001个臭虫,但至少我又在移动了。谢谢。

    2 回复  |  直到 15 年前
        1
  •  0
  •   AnthonyWJones    15 年前

    不幸的是,ASP比其他概念早了很多年。

    如果您要重新填充,那么我将考虑不使用URL编码的表单数据。改用XML。您将能够接受XML实体体,其中:

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

    否则,您将需要对请求对象使用binaryread,然后费力地将字节数组转换为文本,然后自己解析URL编码并解码转义序列。

        2
  •  0
  •   ars    15 年前

    尝试在请求对象中使用BinaryRead方法:

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

    其他选项是编写ASP服务器组件或ISAPI筛选器:

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