idhttp post 中文,服务器端收到是问号。

drifer 2019-12-09 12:00:29
IDHTTP设置如下:
with IdHTTP1 do
begin
ProtocolVersion := pv1_1;
Request.ContentType := 'application/json';
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
Request.AcceptEncoding := 'gzip, deflate';
Request.Accept := '*/*';
Request.CacheControl := 'no-cache';
Request.BasicAuthentication := False;
Request.CharSet := 'utf-8';
Request.ContentEncoding := 'utf-8';
end;

服务器端编码格式是UTF-8,客户端的IDHTTP,POST过去,服务器收到的中文是???问号的形式。
...全文
330 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
drifer 2019-12-17
  • 打赏
  • 举报
回复
对方并不解码。
现在用要POST的字符串初始化为UTF8流,这样再提交就可以了!
  • 打赏
  • 举报
回复
你这样试试:把中文的form参数url编码之后再发送,服务端收到后url解码出对应的中文字符串。
天行归来 2019-12-10
  • 打赏
  • 举报
回复
引用 7 楼 drifer 的回复:
这个POSTMAN提交的也没什么特别的地方。看不出来
看webform tab页里,可以看到发送报文,即你所发送的报文被编码后字符串。
看那山瞧那水 2019-12-10
  • 打赏
  • 举报
回复
我是这样解决的,参考: https://www.cnblogs.com/jankerxp/p/7774029.html
drifer 2019-12-09
  • 打赏
  • 举报
回复
Request.ContentType := 'application/json;Charset=UTF-8'; 也试过,都不行

包括中文内容也用 UTF8Encode('测试'); 的形式处理过,还是不行。
drifer 2019-12-09
  • 打赏
  • 举报
回复

这个POSTMAN提交的也没什么特别的地方。看不出来
天行归来 2019-12-09
  • 打赏
  • 举报
回复
建议装个fiddler抓包分析下,就可以知道如何编码了
drifer 2019-12-09
  • 打赏
  • 举报
回复
在没有指定UTF8的格式下,POSTMAN也能提交成功,不知道它后台还做了什么处理?
drifer 2019-12-09
  • 打赏
  • 举报
回复
POST /api/mtlc/pdtest HTTP/1.1
Content-Type: application/json;
User-Agent: PostmanRuntime/7.19.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 760c08e5-2845-4f59-b5aa-fc7e2d1b101c
Host: 192.168.0.100
Accept-Encoding: gzip, deflate
Content-Length: 540
Connection: keep-alive

以上是POSTMAN的抓包,这里看不出什么来。
天行归来 2019-12-09
  • 打赏
  • 举报
回复
抓包看下 postman 提交参数编码格式
drifer 2019-12-09
  • 打赏
  • 举报
回复
用POSTMAN提交则可以正常。
用抓包工具看到返回的服务器端内容:
Server: Apache-Coyote/1.1
Content-Type: application/xml

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧