Http协议访问DataSnap Rest 服务器 - 封三郎
2016-03-25 21:05
375 查看
Http协议访问DataSnap Rest 服务器 - 封三郎
时间 2014-05-20 15:49:57 博客园-所有随笔区原文 http://www.cnblogs.com/codingnote/p/3739102.html
主题 HTTP .Net
用TIDHttp访问DataSnap Rest服务器,在服务器采用了用户验证的情况下,客户端需要注意下面的细节,否则不能正常连接。
假如服务器有如下的用户验证:
procedure TSC.DSAuthenticationManager1UserAuthenticate(Sender: TObject; const Protocol, Context, User, Password: string; var valid: Boolean; UserRoles: TStrings); var sCheckCode : string; begin valid := False; sCheckCode := CMBSrvIniSetting.SrvCnnCheckCode; if PassWord.Equals(sCheckCode) then begin valid := True; end; end;
那么在客户端连接的时候,必须把这个密码传递过去,否则会发生401错误。
procedure TForm15.Button2Click(Sender: TObject); var url, params, Text: string; code: Integer; http: TIDHttp; begin http:= TIDHttp.Create(nil); http.Request.BasicAuthentication := True; http.request.password := '密码'; params := Edit1.Text; url:= 'http://192.168.10.182:8081/datasnap/rest/TSM/EchoString/'; try text := http.Get(URL+TIdURI.ParamsEnCode(params)); Edit2.Text := Text; except on E: Exception do begin end; end; end;
这样客户端就可以正常访问服务器的方法了。
此外,如果客户端采用Post的方式访问服务器的话,服务器的方法在定义的时候需要在前面加上Update前缀:UpdateEchoString。
TIdURI类定义在IdURI.pas单元。
相关文章推荐
- 我的Android进阶之旅------>Android采用AES+RSA的加密机制对http请求进行加密
- VMWaer克隆centos后网络的问题解决
- TCP/IP的网际层
- Android 网络编程
- HTTP 请求的各种方法及安全性
- Android判断网络状态
- 早上看到一张余票,可是没有等网页进入到结果页面,网络原因就票没了
- 早上看到一张余票,可是没有等网页进入到结果页面,网络原因就票没了
- Bzoj:[ZJOI2010]network 网络扩容:网络流,最大流+费用流
- HttpEntity转为List<JavaBean>
- 线性规划||网络流(费用流):COGS 288. [NOI2008] 志愿者招募
- TCP协议中的三次握手和四次挥手图解
- 20159302《网络攻击与防范》第四周学习总结
- 地址栏传参到action中文出现乱码的问题http://group.gimoo.net/review/96719
- 网络流入门—用于最大流的Dinic算法
- 最简单的二进制神经网络
- TCP连接终止前的TIME_WAIT状态
- http服务配置/LAMP网站平台/PHP应用部署(Discuz!论坛系统
- windows快捷键之打开网络连接
- PHP header函数设置http报文头示例详解