Indy10 idhttp返回JSON设置

https://stackoverflow.com/questions/24025646/delphi-http-post-json

HTTP1.Request.ContentEncoding should be HTTP1.Request.CharSet instead. UTF-8 is a charset encoding, not a content encoding. And then make sure your JSON data is actually encoded to UTF-8 before posting it. If you are using ASCII characters, the TStringStream code you showed is fine. But if you are using non-ASCII Characters, you need to encode them, such as with Utf8Encode()TIdHTTP does not encode TStream data, it is sent as-is.

Procedure Tformmaintestbed.btnJSONSendClick(Sender: TObject);

var

Json: string;

sResponse: string;

JsonToSend: TStringStream;

begin

Json := '{"auth": {"applicationId": "' + edApplication.text +

'","applicationPassword": "' + edpassword.text +

'","accountId": "' + edaccount.text +

'","userId": "' + edUser.text +

'"}}';

 

memoRequest.Text := Json;

 

JsonToSend := TStringStream.Create(Utf8Encode(Json)); // D2007 and earlier only

//in D2009 and later, use this instead:

//JsonToSend := TStringStream.Create(Json, TEncoding.UTF8);

try

HTTP1.Request.ContentType := 'application/json';

HTTP1.Request.CharSet := 'utf-8';

 

try

sResponse := HTTP1.Post(cbAddress.Text, JsonToSend);

except

on E: Exception do

ShowMessage('Error on request: '#13#10 + e.Message);

end;

finally

JsonToSend.Free;

end;

 

memoResponse.Text := sResponse;

end;

Alternatively:

Procedure Tformmaintestbed.btnJSONSendClick(Sender: TObject);

var

Json: string;

sResponse: string;

JsonToSend: TMemoryStream;

begin

Json := '{"auth": {"applicationId": "' + edApplication.text +

'","applicationPassword": "' + edpassword.text +

'","accountId": "' + edaccount.text +

'","userId": "' + edUser.text +

'"}}';

 

memoRequest.Text := Json;

 

JsonToSend := TMemoryStream.Create;

try

WriteStringToStream(JsonToSend, Json, enUTF8);

JsonToSend.Position := 0;

 

HTTP1.Request.ContentType := 'application/json';

HTTP1.Request.CharSet := 'utf-8';

 

try

sResponse := HTTP1.Post(cbAddress.Text, JsonToSend);

except

on E: Exception do

ShowMessage('Error on request: '#13#10 + e.Message);

end;

finally

JsonToSend.Free;

end;

 

memoResponse.Text := sResponse;

end;

转载于:https://www.cnblogs.com/jspdelphi/p/8336575.html

发布了0 篇原创文章 · 获赞 6 · 访问量 5万+
展开阅读全文
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览