从经典的asp页面调用REST Web服务

时间:2008-08-14 15:34:27

标签: web-services rest asp-classic

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

我对如何做到这一点没有任何想法。

7 个答案:

答案 0 :(得分:28)

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

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

MSXML2.ServerXMLHTTP

像:

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

答案 1 :(得分:9)

@ KP

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

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

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

这非常重要,否则您将体验到您的网络应用程序挂起以及各种奇怪的废话。

答案 2 :(得分:6)

答案 3 :(得分:3)

此处提供的一些答案似乎涵盖了ClassicASP如何用于消费网络服务和REST调用。

在我看来,一个更整洁的解决方案可能是你的ClassicASP只提供REST格式的数据。如果可能,让基于浏览器的客户端代码处理'mashup'。您应该能够在不包含任何其他ASP组件的情况下执行此操作。

所以,这就是我如何在ClassicASP中模拟闪亮的新REST支持:

  1. 提供一个充当着陆点的ASP网页
  2. 着陆版将处理两个参数:动词和网址,以及一组表单内容
  3. 使用某种切换块检查URL并将动词(和表单内容)指向相关的处理程序
  4. 然后处理程序将处理动词(PUT / POST / GET / DELETE)和表单内容,并根据需要返回成功/失败代码和数据。
  5. 您的着陆点将检查成功/失败代码并返回相应的HTTP状态以及任何返回的数据
  6. 您可以从支持类中受益,该支持类将表单数据解码/编码为JSON,因为这样可以简化客户端实现(并可能简化传递的数据量)。请参阅Any good libraries for parsing JSON in Classic ASP?

    上的对话

    最后,在客户端,提供一个采用Verb,Url和数据有效负载的方法。在短期内,该方法将整理参数并将其转发到您的着陆垫。从长远来看(一旦你从经典ASP切换),你的方法可以将数据发送到'真实'网址。

    祝你好运......

答案 4 :(得分:1)

另一种可能的解决方案是编写一个.NET DLL来进行调用并返回结果(可能包含像RESTSharp这样的东西 - 为它提供一个根据您的需求定制的简单API)。然后将DLL注册为COM DLL,并通过CreateObject方法在ASP代码中使用它。

我已经为创建签名的JWT以及salting和hashing密码这样做了。它工作得很好(当你疯狂地重写ASP时)。

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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