【发布时间】:2020-09-11 03:12:03
【问题描述】:
大家好,所有的程序员,
目前我想弄清楚如何在 Delphi 中使用 HTTPS 请求 (POST)。 我有这段代码:
uses ..., IdHTTP, IdSSLOpenSSL;
....
procedure TForm2.Button4Click(Sender: TObject);
var
PostStrings :TStringList;
ResponseStream :TStringStream;
ausgabe :String;
zeile :String;
i :Integer;
s :array of string;
Strings :TStringList;
Stream :TStringStream;
begin
Stream := TStringStream.Create('');
Strings := TStringList.Create;
try
Strings.Add('Noone='+Edit1.Text);
Strings.Add('Foo='+Edit2.Text);
IdHTTP1 := TIdHTTP.Create(nil);
try
IdHTTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP1);
IdHTTP1.HandleRedirects := True;
idHTTP1.Post('https://api.mysitefortest.de/postit.php', Strings,stream);
ausgabe := Stream.DataString;
zeile := '';
for i:=1 to Length(ausgabe) do begin
if (ausgabe[i]=#13) and (ausgabe[i+1]=#10) then begin
ResponseMemo.Lines.Add(zeile);
zeile:='';
end else if s[i]<>#10 Then zeile:=zeile+ausgabe[i];
end;
ResponseMemo.Lines.Add(zeile);
except
on E: Exception do
showmessage('Error encountered during POST: ' + E.Message);
end;
finally
Strings.Free;
Stream.Free;
end;
end;
php文件:
<?php
echo 'Noone: '.$zitatArray["Noone"];
echo Chr(13).Chr(10);
echo 'Foo: '.$zitatArray["Foo"];
?>
如果我按下 sendpost 按钮,就会出现错误。它说,ssl.-library 无法加载。
MMhhh - 如何在 indy 中使用 ssl 似乎是个秘密。我搜索了谷歌,但我没有找到一些明确的例子。 我想我需要一个 ssl 库。但是哪一个?如何在我的 Delphi 中使用它?去哪里买?
希望有人能帮忙解释一下——也希望其他程序员能解决这个问题??
谢谢
(对不起,如果我的代码不清楚 - 我还在学习;))
【问题讨论】:
-
您似乎无法找到 SSL 库。你在使用 OpenSSL 吗?您可能需要安装它。我推荐slproweb.com/products/Win32OpenSSL.html
-
"如何在 indy 中使用 ssl 似乎是个秘密。" - 请参阅 Embarcadero 文档中的 Securing Indy Network Connections。已知可与 Indy 一起使用的 OpenSSL 1.0.2 和更早版本的 DLL 可在 github.com/IndySockets/OpenSSL-Binaries 获得。 Indy 有 experimental support for OpenSSL 1.1.x,但您必须在其他地方获取这些 DLL。
-
确切的错误信息是什么?
-
感谢您的回答。
-
在这里indy.fulgan.com/SSL/Archive/Experimental 找到了一些东西,这正是我所需要的。把这两个.dll放到目录下,应用还在运行。