【问题标题】:Calling REST web services from a classic asp page从经典的 asp 页面调用 REST Web 服务
【发布时间】:2010-09-05 21:20:25
【问题描述】:

我想开始将我们的应用程序业务层移动到 REST Web 服务的集合中。但是,我们的大部分 Intranet 都是使用 Classic ASP 构建的,而我工作的大多数开发人员都使用 Classic ASP 进行编程。理想情况下,为了让他们受益于一组独特的 Web API 的优势,必须从经典 ASP 页面调用它。

我一点也不知道该怎么做。

【问题讨论】:

    标签: web-services rest asp-classic


    【解决方案1】:

    您可以结合使用 JQuery 和 JSON 调用来使用来自客户端的 REST 服务

    如果您需要与 ASP 层的 REST 服务进行交互,您可以使用

    MSXML2.ServerXMLHTTP

    喜欢:

    Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
    HttpReq.open "GET", "Rest_URI", False
    HttpReq.send
    

    【讨论】:

    • 如果我的 REST 服务需要基本身份验证怎么办?从经典 ASP 调用它的第二种方法会发生什么变化?
    【解决方案2】:

    @KP

    您实际上应该在 ASP/服务器端应用程序中使用MSXML2.ServerXMLHTTPXMLHTTP 只能用于客户端,因为它使用不支持在服务器/服务应用程序中使用的 WinInet。

    参见http://support.microsoft.com/kb/290761,问题 3、4 和 5 和

    http://support.microsoft.com/kb/238425/

    这很重要,否则你会遇到你的 web 应用程序挂起和各种奇怪的废话。

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      这里提供的一些答案似乎涵盖了如何使用 ClassicASP 来使用 Web 服务和 REST 调用。

      在我看来,一个更简洁的解决方案可能是让您的 ClassicASP 仅以 REST 格式提供数据。如果可能,让您的基于浏览器的客户端代码处理“混搭”。您应该能够在不包含任何其他 ASP 组件的情况下做到这一点。

      所以,我将在 ClassicASP 中模拟闪亮的新 REST 支持:

      1. 提供单个 ASP 网页作为登陆平台
      2. 着陆板将处理两个参数:动词和 URL,以及一组表单内容
      3. 使用某种开关块检查 URL 并将动词(和表单内容)定向到相关处理程序
      4. 然后,处理程序将处理动词 (PUT/POST/GET/DELETE) 以及表单内容,并根据需要返回成功/失败代码和数据。
      5. 您的着陆台将检查成功/失败代码并返回相应的 HTTP 状态以及任何返回的数据

      您将受益于将表单数据从/到 JSON 解码/编码的支持类,因为这将简化您的客户端实现(并可能简化传递的数据量)。在Any good libraries for parsing JSON in Classic ASP?查看对话

      最后,在客户端,提供一个接受动词、网址和数据负载的方法。在短期内,该方法将整理参数并将它们转发到您的着陆台。从长远来看(一旦您从 Classic ASP 切换),您的方法可以将数据发送到“真实”网址。

      祝你好运……

      【讨论】:

        【解决方案5】:

        另一种可能的解决方案是编写一个 .NET DLL 进行调用并返回结果(也许包装类似 RESTSharp 的东西 - 给它一个根据您的需要定制的简单 API)。然后将 DLL 注册为 COM DLL 并通过 CreateObject 方法在 ASP 代码中使用它。

        我已经为创建签名的 JWT 以及加盐和散列密码等事情做到了这一点。它工作得很好(当你疯狂地重写 ASP 时)。

        【讨论】:

          【解决方案6】:

          另一种可能是使用 WinHttp COM 对象Using the WinHttpRequest COM Object

          WinHttp 旨在从服务器代码中使用。

          【讨论】:

            【解决方案7】:

            您只需要一个 HTTP 客户端。在 .Net 中,WebRequest 运行良好。对于经典 ASP,您将需要一个特定的组件,例如 this one

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-12-17
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多