找回密码
 立即注册
查看: 461|回复: 0

DELPHI XE 10.3 调用API SSL 处理 HTTP Basic的验证 传输内容汉字乱码 处理办法

[复制链接]

194

主题

0

回帖

986

积分

管理员

积分
986
发表于 2024-6-15 17:28:52 | 显示全部楼层 |阅读模式
SSL 处理  需要程序文件中放libeay32.dll、ssleay32.dll 文件


unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils,
  System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,



  StdCtrls,IdHTTP, IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent,
  IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL;

type
  TMain_API_Form = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    IdHTTP1: TIdHTTP;
    IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

    function SendMsg(Msg : string) : string;
  end;

var
  Main_API_Form: TMain_API_Form;

implementation

{$R *.dfm}

{ TMain_API_Form }

procedure TMain_API_Form.Button1Click(Sender: TObject);
var
  acceptInfo : string;
begin
  //向API发送信息,并获取返回
  acceptInfo := SendMsg(Edit1.Text);
  //将信息在界面上显示
  Memo1.Lines.Add(acceptInfo);
end;

function TMain_API_Form.SendMsg(Msg: string): string;
var
  idhttp :  TIdHTTP;
  url,ResquestStr,ResponseStr : string;
  ResquestStream,ResponseStream : TStringStream;
begin
  Result := '';
  idhttp := IdHTTP1;
  idhttp.Request.ContentType := 'application/json';
  idhttp.Request.Accept := 'application/json';
  idhttp.Request.UserName:='**********';
  idhttp.Request.Password:='***************';
  idhttp.Request.BasicAuthentication:=True;


  ResquestStr :=Msg;

  //将传递的信息,写入请求流
  ResquestStream := TStringStream.Create(ResquestStr, TEncoding.GetEncoding(65001));   //此处是处理中文乱码问题  indy10控件的UTF8转码方法会出现汉字乱码
  ResponseStream := TStringStream.Create('');
  ShowMessage(ResquestStr);

  url := 'https://kerrywines.jinshuju.com/api/v1/forms/RZlOkN';
  try
    try
      //发起请求
      idhttp.Post(url,ResquestStream,ResponseStream);
    except
      on e: Exception do
      begin
        ShowMessage('出现异常:' + e.Message);
      end;
    end;
    //获取响应的信息
    ResponseStr := ResponseStream.DataString;
    //响应的信息需要进行 UTF8 解密
    ResponseStr := UTF8Decode(ResponseStr);
    Result := ResponseStr;
  finally
    idhttp.Free;
    ResquestStream.Free;
    ResponseStream.Free;
  end;
end;



end.
商务合作
业务洽谈
Wechat:S3-SH-CN  
QQ群:128669090
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|S3软件

GMT+8, 2026-6-6 07:47 , Processed in 0.044406 second(s), 19 queries .

Powered by S3

©2001-2025 S3 Team.

快速回复 返回顶部 返回列表