好久没摸delphi xe 10.3.3,求大神用TIDHTTP获取到token之后无法获取数值,报Connection Closed Gracefully
var
PostData, RespData: TStringStream;
HTTP: TIdHTTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
RespData := TStringStream.Create('');
PostData := TStringStream.Create(Data); //个人判断这里TStringStream.create('data')不启作用
SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
HTTP := TIdHTTP.Create;
HTTP.HandleRedirects := true;
HTTP.IOHandler := SSL;
try
try
if HTTP = nil then
Exit;
HTTP.Post(Url, PostData, RespData); //这里报错点 Connection Closed Gracefully.
Result :=Utf8ToAnsi( RespData.DataString);
HTTP.Request.Referer := Url;
except
on e: Exception do
begin
AddLog(e.Message); //这里是写入日志,忽略掉
Dec(Max);
if Max = 0 then
begin
Result := '';
Exit;
end;
Result := PostMethod(Url, Data, Max);
end;
end;
finally
HTTP.Disconnect;
HTTP.Free;
SSL.Free;
FreeAndNil(RespData);
FreeAndNil(PostData);
end;
end;
procedure TForm1.GetToken;
var
Url,Access_Token,StrJson,results: string;
Expires_IN:integer;
Root,Data: TJSONObject;
node: IXMLNode;
ParamsStr: string;
LDocument: IXMLDocument;
Paramslist: TStringList;
SValue:String;
begin
URL:=TokenUrl;
LDocument := TXMLDocument.Create(nil);
LDocument.LoadFromXML(GetMethod (URL,1));
node := LDocument.DocumentElement;
ReadXml(node,'token' ,ParamsStr); //成功抓取到Token--自定义过程获取服务器返回信息转成XML,并取出中的token值
Paramslist := TStringList.Create;
try
Paramslist.Text := ParamsStr; //把token值 数据传成数组 token值 为【Azh18=】
SValue:='&memberid=13455216875';
URL:=QueryVIPValue+Paramslist.Text; //URL结果为---http://12.227.110.23:801/api/memV/query?access-token=Azh18=
Data:= TJSONObject.Create;
try
Data.AddPair('Member','13455216875');
Memo2.Text:=PostMethod(URL, UTF8Encode(Data.ToString), 1); //断点这里报错{Connection Closed Gracefully},应该是postmethod 方法内出现,看上面。
finally
Data.Free;
end;
finally
Paramslist.Free;
end;
end;
服务环境如下:
服务器接口定义:
请求方式:POST
请求地址:/api/memV/query
参数说明:
名称 类型 必须 描述
memV String true 会员卡号
返回参数
名称 类型 描述
code number 返回代码
message string 返回信息
amount number 余额
请求示例
{"memv":"13455216875"}
返回示例
{“code”:0,
"message":"ok",
"amount": 50
}
相关推荐
使用delphi XE的IdHTTP控件POST的例子
使用delphi XE的IdHTTP控件POST的例子,IDHTTP速度很快,是个不错的控件
Delphi Indi组件TCP通信解决方案XE10.3版本
Indy组件库是一个开源的网络通信组件集合,特别适合用于Delphi和C++ Builder开发环境。它提供了一系列的TCP/IP协议支持,包括客户端和服务器端通信功能。在Delphi中,Indy组件库被广泛应用于构建各种网络应用,如FTP客户端、HTTP服务器等。在Delphi的网络编程中,组件是Indy组件库提供的一个客户端TCP套接字组件。它允许开发者创建一个TCP客户端实例以连接到服务器进行通信。该组件具有多个重要的属性和方法:Host: 这个属性用于指定服务器的主机名或IP地址。
Indy10 Delphi XE5下聊天应用实践与源代码解析
Indy(Internet Direct)是一个开放源码的组件套件,专门用于Delphi和C++ Builder环境,用于简化网络编程的复杂性。在Delphi XE5中,Indy10作为一个升级版本,为开发者提供了更加强大和灵活的网络通信解决方案。Indy10组件主要由一系列的网络协议组件构成,例如TCP、UDP、HTTP等,每个协议都有相应的客户端和服务器端组件。
Delphi XE7 TCP Socket编程实践教程
Delphi XE7是一个面向对象、基于组件的开发环境,它被广泛应用于创建企业级应用程序、移动应用和Web服务。Delphi XE7的集成开发环境(IDE)提供了丰富的工具集,包括代码编辑器、调试器、可视化表单设计器、组件库和项目管理器,使得软件开发更加高效和直观。Indy项目(Internet Direct)是一个开源的网络通信库,最初由Bob Swart在1990年代中期开始开发。
Delphi 12.3 源码编译安装 UniDAC 10.3.0 实战与排坑全记录
在Delphi开发中,数据库访问组件一直是企业级应用的核心依赖。UniDAC作为一套可统一访问Oracle、SQL Server、MySQL、PostgreSQL、SQLite等主流数据库的通用组件,凭借其灵活的Provider切换机制,在ERP、MES、进销存等场景中广泛使用。然而,面对Delphi 12.3这样的新版本,许多开发者选择源码编译安装以获得版本匹配、可调试源码和路径可控等优势。本文将详细介绍从解压源码包、配置Library Path、编译运行时包与设计时包,到处理IDE控件消失、数据库连接失


网络通信/分布式开发
