一、用ASP.Net做客户端调用REST Server
在Delphi prism xe中使用ASP.Net做客户端,
(1)通过http Get调用可以:
(2)通过DataSnap Client调用
调用REST Server会出现一个错误:
具体应该是:
'Borland.Data.DbxCommonDriver, Version=15.0.0.0, Culture=neutral, PublicKeyToken=a91a7c5705831a4f' or one of its dependencies
已经确认这是个bug,https://forums.embarcadero.com/message.jspa?messageID=294148#294148
二、Delphi prism能写REST Server吗?
Delphi prism xe没有直接写REST Server的project wizard,但是可以参考visual c#/Web/WCF REST Service Application的写法,然后在Prism中,建立一个Web/ASP.Net Web Application项目,然后,在Project右键,“添加”-“import c#”,选到那个Service1.cs,会自动转成Service.pas,在其中写个函数:
方法前因为要加[WebGet(UriTemplate := 'Sum/{a}/{b}')],按参数列举出URI的样式,所以函数参数必须是字串,定义成a:integer就编译不过。(我不确定是不是这样定死了的)
然后,打开global.asax.pas,在其中写上:
记得useing 这几个:
System.ServiceModel,
System.ServiceModel.Activation,
System.Web.Routing,
然后编译,ok了。
在IE中执行:http://localhost:54795/Service1/Sum/3/4
出现错误:
查看原文件,看到的是:
如果在函数的Attribute中加上ResponseFormat := WebMessageFormat.Json,就可以看到结果了:
后续希望prism能直接提供这样的REST Server project wizard。或者希望Visual Studo Shell的project wizard都有一个语言选项,让不同的厂家以不同的语言来实现,如delphi,c#,vb.Net等。
三、REST Server的部署
以上是在IDE调试执行的。
在用dll部署到windows7的IIS7中,http://localhost:8084/WebApplication3.dll执行时出现了如下错误:
将继续研究......
四、Delphi prism xe能用datasnap来写REST Server吗?
确认了在delphi prism xe中无法使用DataSnap来写REST Server,即无法使用TDSServer。