USEGEAR

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

TidHTTP的post编码,老掉牙的问题

TidHTTP使用post时,需要提交json字符串。

那么采用什么编码,这个问题就头大了。目前xe已经不要考虑编码转换问题。但是....

我们使用ISuperObject操控json。那么最后提交到post的数据应该是这样?

idHttp.post(urURL,stream)

复制代码
idhtp1.Post('http://123.124.211.113:9050/myMoth',RequestBody);
==================================
RequestBody是StringStream,具体内容如下才能成功:
'{"biz_content":"{\"nurse_code\":\"230704100523655950\",\"nurse_name\":\"\u5f20\u65e9\u65e9\",\"org_id\": \"1681123936592465920\",\"delete_flag\":\"0\"}","time":"1695139471","sign":"CF8D24967B933104C7B9C74A22249CAB"}'

http接收到改请求数据后会转换成:
{"biz_content": "{\"nurse_code\":\"230704100523655950\",\"nurse_name\": \"张早早\",\"org_id\": \"1681123936592465920\",\"delete_flag\": \"0\"}",    "time": "1695139471",    "sign": "CF8D24967B933104C7B9C74A22249CAB"}
如此能成功post。
复制代码

你问我怎么知道。

1、使用firefox安装restClient(?)扩展件。然后就可以如同postman一样进行提交数据,以确认正确的姿势。

 2、使用你的exe提交post,不知道数据长成什么样,不要紧使用这玩意抓包。

 

 核对你提交的数据。

最后确定你应该使用:

复制代码
RequestBody := TStringStream.create(jo.asjson);//而不是jo.asString
tmpstr1 := idhtp1.Post('http://urMeth',RequestBody);
idhtp1.Request.ContentType :
= 'application/json'; idhtp1.Request.CustomHeaders.Values['secret'] := '1681123936592465920'; idhtp1.HandleRedirects := True; idhtp1.Request.ContentType := 'application/json'; idhtp1.Request.Accept := 'application/json';
复制代码

 

posted on   USEGEAR  阅读(232)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
历史上的今天:
2019-09-21 sql server2005的死锁
点击右上角即可分享
微信分享提示