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

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

Calling REST web services from a classic asp page

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

我丝毫不知道该怎么做。


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

要么

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

MSXML2.ServerXMLHTTP

喜欢:

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

@KP

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

请参阅http://support.microsoft.com/kb/290761,问题3、4和5,以及

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

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


以下是一些文章,描述了如何从类ASP页面调用Web服务:

  • 将ASP.NET XML Web Services与"经典" ASP应用程序集成
  • 在经典ASP中使用XML Web Services
  • 从ASP消费WSDL Web服务

此处提供的许多答案似乎都涵盖了ClassicASP如何用于消费Web服务和REST调用。

我认为,您的ClassicASP可以使用一种更整洁的解决方案,使其仅以REST格式提供数据。如果可能,让基于浏览器的客户端代码处理" mashup"。您应该能够在不合并任何其他ASP组件的情况下执行此操作。

因此,这是我如何在ClassicASP中模拟闪亮的新REST支持:

  • 提供单个ASP网页作为登陆平台
  • 登陆垫将处理两个参数:动词和URL,以及一组表单内容
  • 使用某种开关块检查URL并将动词(和表单内容)定向到相关处理程序
  • 然后,处理程序将处理动词(PUT / POST / GET / DELETE)和表单内容,并返回成功/失败代码以及相应的数据。
  • 您的登陆平台将检查成功/失败代码,并返回相应的HTTP状态以及所有返回的数据
  • 您将受益于支持类,该支持类对JSON中的表单数据进行解码/编码,因为这将简化您的客户端实现(并可能简化传递的数据量)。请参阅此处的对话。在Classic ASP中,有没有很好的用于解析JSON的库?

    最后,在客户端,提供一种采用动词,网址和数据有效载荷的方法。在短期内,该方法将整理参数并将其转发到您的着陆区。从长远来看(一旦您退出经典ASP),您的方法可以将数据发送到"真实" URL。

    祝好运...


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

    我已经完成了一些工作,例如创建签名的JWT,添加盐值和哈希密码。它运行良好(当您疯狂地重写ASP时)。


    另一种可能性是使用WinHttpRequest COM对象使用WinHttp COM对象。

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


    您需要的只是一个HTTP客户端。在.Net中,WebRequest效果很好。对于经典ASP,您将需要一个像这样的特定组件。


    推荐阅读