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';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 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的死锁