delphi RestClient 用法1

 delphi xe7 环境下使用 restclient,restrequest ,restrespone 三个组件取java 的rest服务数据。

1. 普通rest服务地址的取,在网上很多例子,就不多说,很容易实验

2.在rest的地址中用get 方法 提交带有json数据格式的地址。

如:http://localhost:8080/rest/def/updatefds/{"fdsno":1,"describe":"河内你好","canipno":2,"scanflag":1,"fdstype":"S","opt":"update"}/1490424350230

发现提示无法连接,根据跟踪发现无法解析地址中的json

最后变成 http://localhost:8080/rest/def/updatefds///1490424350230
使用 HttpAnalyzerStd V7 该抓包工具可观察

解决该问题,使用 restClient1.BaseURL := TIdURI.URLEncode('http://localhost:8080/rest/def/updatefds/{"fdsno":1,"describe":"河内你好","canipno":2,"scanflag":1,"fdstype":"S","opt":"update"}/1490424350230'); 编码

提交。。发现编码后的地址 变成

rest/def/updatefds/%257B%2522opt%2522:%2522update%2522,%2522canipno%2522:2,%2522scanflag%2522:1,%2522describe%2522:%2522%25E6%25B2%25B3%25E5%2586%2585%25E4%25BD%25A0%25E5%25A5%25BD123%2522,%2522fdsno%2522:1,%2522fdstype%2522:%2522S%2522%257D/1490424350230


注意 你们多了个%25

正确的编码 应该是这样:

rest/def/updatefds/%7B%22fdsno%22:1,%22describe%22:%22%E6%B2%B3%E5%86%85%E4%BD%A0%E5%A5%BD%22,%22canipno%22:2,%22scanflag%22:1,%22fdstype%22:%22S%22,%22opt%22:%22update%22%7D/1490424350230

经过分析 %25 实际是%号的转义。restRequest 再次对编码过的地址二次编码!坑爹啊!

需要设置  RESTRequest1.URLAlreadyEncoded := true; 使restrequest 不在二次编码!

提交 搞定!!!!血的教训啊。 摸索了一天,希望能给后来朋友一个提示!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值