Delphi中IdHttp调用接口,返回值乱码
--------开发环境是Delphi XE10--------
这里要说的是BUG问题,
var
respStream : TStringStream; respStream.DataString有问题,中文部分乱码!
解决方法也在代码当中
----------------------------
1 unit u_Main;
2
3 interface
4
5 uses
6 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
7 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.Menus, Vcl.StdCtrls,
8 IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdMultipartFormData;
9
10 type
11 TFrmMain = class(TForm)
12 PageControl1: TPageControl;
13 tabsMESPacking: TTabSheet;
14 IdHTTP1: TIdHTTP;
15 Edit1: TEdit;
16 Button1: TButton;
17 Memo1: TMemo;
18 Edit2: TEdit;
19 procedure Button1Click(Sender: TObject);
20 private
21 { Private declarations }
22 public
23 { Public declarations }
24 end;
25
26 var
27 FrmMain: TFrmMain;
28
29 implementation
30
31 {$R *.dfm}
32 function StreamToString(mStream : TStream) : AnsiString;
33 var
34 I : Integer;
35 begin
36 Result := '';
37 if not Assigned(mStream) then Exit;
38 SetLength(Result , mStream.Size);
39 for I := 0 to Pred(mStream.Size) do
40 try
41 mStream.Position := I;
42 mStream.Read(Result[Succ(I)] , 1);
43 except
44 Result := '';
45 end;
46 end;
47
48 procedure TFrmMain.Button1Click(Sender: TObject);
49 var
50 postStream,respStream : TStringStream;
51 ss,aa:string;
52 vstream:TMemoryStream;
53 begin
54 postStream := TStringStream.Create(Memo1.Text);
55 respStream:=TStringStream.Create('');
56 vstream:=TMemoryStream.Create;
57 IdHTTP1.Request.CharSet:='utf-8';
58 IdHTTP1.Request.ContentType := 'application/json';
59 IdHTTP1.Post(Edit1.Text,postStream,respStream);
60 ss:=respStream.DataString;
61
62 respStream.SaveToStream(vstream);
63 aa:=UTF8ToString(StreamToString(vstream));
64 Edit2.Text:=aa;
65 end;
66
67 end.
Delphi中IdHttp调用接口,返回值乱码的更多相关文章
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用枚举?
在阅读<阿里巴巴Java开发手册>时,发现有一条关于二方库依赖中接口返回值不允许使用枚举类型的规约,具体内容如下: 在谈论为什么之前先来科普下什么是二方库,二方库也称作二方包,一般指公司内 ...
- nginx访问日志中添加接口返回值
因为nginx作为web服务器时,会代理后端的一些接口,这时访问日志中只能记录访问接口的status码,也就是说,只能获得200.404 这些的值 那么如何获得接口返回的response值呢? 下面开 ...
- asp+vb.net解决调接口返回中文乱码问题
1.问题描述 涉及语言:vb,vbscript,vb.net,asp 最近在工作中碰到了这样一个问题:需要调用一个接口解析简历文件中的关键信息.直接用postman测试该接口,接口返回值没问题,但一旦 ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- (转载)delphi 中如何调用sql 存储过程
delphi 中如何调用sql 存储过程 使用TADOStoredProc组件,可以,给你举个例子好了 with ADOStoredProc1 do begin Close; Parameters.C ...
- WebApi 接口返回值类型详解 ( 转 )
使用过Webapi的园友应该都知道,Webapi的接口返回值主要有四种类型 void无返回值 IHttpActionResult HttpResponseMessage 自定义类型 此篇就围绕这四块分 ...
- WebApi接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.作为程序猿,我们都知道参数和返回值是编程领域不可分割的两大块,此前分享了 ...
- WebApi 接口返回值不困惑:返回值类型详解。IHttpActionResult、void、HttpResponseMessage、自定义类型
首先声明,我还没有这么强大的功底,只是感觉博主写的很好,就做了一个复制,请别因为这个鄙视我,博主网址:http://www.cnblogs.com/landeanfen/p/5501487.html ...
- (转)C# WebApi 接口返回值不困惑:返回值类型详解
原文地址:http://www.cnblogs.com/landeanfen/p/5501487.html 正文 前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi ...
- [转]C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
本文转自:http://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T c ...
随机推荐
- ajax thisisunsafe
ajax 从chrome发出,对方公钥证书不是符合要求CA签发的,则会ssl握手失败,也没有机会强制信任 比如:http代理服务器(三)fiddler[重点] 当然应该可以从ajax指定信任一切服务端 ...
- Efficient training of physics-informed neural networks via importance sampling
因为看着作者是英伟达的,便看了一下.总体感觉没有什么新意,改进幅度也很小,但是理论推导可以看一下.可以借鉴一下. 本文通过重要性采样对PINN进行高效计算,本文提出的方法很简单,也很直观,但效果提升有 ...
- docker镜像原理(一)
在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...
- Go实现KMP和Sunday算法
KMP 1 func KMP(str, substr string) int { 2 if substr == "" { 3 return 0 4 } 5 strLen := le ...
- Java 日期类 处理
原始方案:SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD"); //线程不安全类,最好不要用了,替代方案: Date ...
- 微信公众号 H5授权登录
首先微信公众号 必须是服务号,订阅号没有 "网页授权获取用户基本信息" 没有这个权限.服务号也必须认证后才有这个权限
- uniapp 复制 粘贴,系统剪贴板
uniapp里不叫复制粘贴,叫系统剪贴板uni.setClipboardData({ data: this.href, success: () => { uni.hideToast(); thi ...
- (四)kafka基础术语
1 Topic Kafka消息分类的标签,是一个逻辑概念. 2 Partion 主题作为消息的归类,可以细分为一个或多个分区,分区可以看做是对消息的二次归类.分区可以有一个至多个副本,每个副本对应一个 ...
- Perl报错you may need to install the Win32::Console module(转)
ActivePerl-5.26.3.XXXX.msi安装后,命令行执行cpan,会出现如下提示而无法继续. Can't locate Win32/Console.pm in @INC (you may ...
- vue页面多表单验证保存
页面中有多个表单需要验证,可以使用以下方法: export default { data: { return { addOrEditVo: { name: '', description: '', a ...