自己看了很多的贴子,都满足不了我的需求。。
后来无意中看到一个关于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;