您的位置:首页 > 编程语言 > Delphi

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

2014-01-04 14:17 405 查看
自己看了很多的贴子,都满足不了我的需求。。

后来无意中看到一个关于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;


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息