解决delphi XE5中使用RESTClient提交Body类型的乱码问题


自己看了很多的贴子,都满足不了我的需求。。

后来无意中看到一个关于TStringStream的代码。。

然后试了一下,尽然可以了。。可喜可贺。记录一下。。


例子:

tRestRequest.AddBody(TStringStream.Create('{"test":"123abc试试"}',TEncoding.UTF8),TRESTContentType.ctAPPLICATION_JSON);
tRestRequest.Execute;

 

P.S.

最终还是有问题,查了很多资料后发现虽然如上述一样成功转换成了UTF8格式,但是TRest引用的indy idhttp组件中在post的时候会将UTF8转为ANSIString,会导致中文某些字符丢失或成?。。最后我还是直接用了idhttp来实现rest的功能,希望XE5以后会改进。代码如下:

      idHttp:=TIdHTTP.Create(nil);
      idHttp.Request.ContentType:='application/json';
      //请求
      rURL:='http://www.simple.com/simpleapi';
      lResponse:=idHttp.Post(rURL,TStringStream.Create('{"user":"'+User+'","password":"'+Pass+'"}',TEncoding.UTF8));
      rJson:=TJSONObject.ParseJSONValue(lResponse) as TJSONObject;


 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值