我想开始将我们的应用程序业务层移动到REST Web服务的集合中。但是,我们的大多数Intranet都是使用Classic ASP构建的,我工作的大多数开发人员都在使用Classic ASP进行编程。理想情况下,为了让他们从一组独特的Web API中获益,必须从Classic ASP页面调用它。
我对如何做到这一点没有任何想法。
答案 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.ServerXMLHTTP
。 XMLHTTP
应仅用于客户端,因为它使用的WinInet不支持在服务器/服务应用程序中使用。
见http://support.microsoft.com/kb/290761,问题3,4和& 5和
http://support.microsoft.com/kb/238425/。
这非常重要,否则您将体验到您的网络应用程序挂起以及各种奇怪的废话。
答案 2 :(得分:6)
以下是一些描述如何从类ASP页面调用Web服务的文章:
答案 3 :(得分:3)
此处提供的一些答案似乎涵盖了ClassicASP如何用于消费网络服务和REST调用。
在我看来,一个更整洁的解决方案可能是你的ClassicASP只提供REST格式的数据。如果可能,让基于浏览器的客户端代码处理'mashup'。您应该能够在不包含任何其他ASP组件的情况下执行此操作。
所以,这就是我如何在ClassicASP中模拟闪亮的新REST支持:
您可以从支持类中受益,该支持类将表单数据解码/编码为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)
您只需要一个HTTP客户端。在.Net中,WebRequest运行良好。对于经典ASP,您需要一个特定的组件,如this one。
答案 6 :(得分:0)
另一种可能性是使用WinHttp COM对象Using the WinHttpRequest COM Object。
WinHttp旨在从服务器代码中使用。