Comment créer une requête HTTPS POST dans Delphi?
Quelle est la meilleure façon de faire une demande HTTPS POST en Delphi? Je ne suis pas à avoir des problèmes à faire des demandes HTTP POST, mais comment puis-je le faire à l'aide de SSL? J'ai googlé autour et n'ai rien trouvé qui explique assez bien.
Voici le code que j'ai essayé:
procedure TForm1.FormCreate(Sender: TObject);
var
responseXML:TMemoryStream;
responseFromServer:string;
begin
responseXML := TMemoryStream.Create;
IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(self);
with idSSLIOHandlerSocketOpenSSL1 do
begin
SSLOptions.Method := sslvSSLv2;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 0;
host := '';
end;
IdHTTP1 := TIdHTTP.Create(Self);
with IdHTTP1 do
begin
IOHandler := IdSSLIOHandlerSocketOpenSSL1;
AllowCookies := True;
ProxyParams.BasicAuthentication := False;
ProxyParams.ProxyPort := 0;
Request.ContentLength := -1;
Request.ContentRangeEnd := 0;
Request.ContentRangeStart := 0;
Request.Accept := 'text/html, */*';
Request.BasicAuthentication := False;
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
HTTPOptions := [hoForceEncodeParams];
end;
responsefromserver := IdHTTP1.Post('https://.../','name1=value1&name2=value2&....');
end;
Quand j'essaie de le lancer, j'obtiens l'erreur suivante:
Project myProject.exe raised exception class EFOpenError with message 'Cannot open file "C:\...\Projects\Debug\Win32\name1=value1name2=value2 The system cannot find the file specified'.
Je ne comprends pas. J'ai envoyé des paramètres, bien que les erreurs de sons comme je l'aurais envoyé un fichier.
J'ai également inclus libeay32.dll et ssleay32.dll au sein de mon myProject.exe dossier.
source d'informationauteur Peacelyk
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas précisé votre Delphi version ou indy version, mais j'ai eu quelques problèmes avant avec le logiciel d'Indy avec Delphi 2009 et HTTPS, et quand j'ai reçu la dernière source de indy svnle problème est résolu.
Une autre alternative à l'Indy est Synapse.
Cette bibliothèque de classe offre le plein contrôle de la poste, mais offre également un simple liner méthode post:
http://chee-yang.blogspot.com/2008/03/using-indy-https-client-to-consume.html
fin;
Si vous voulais essayer quelque chose d'autre que d'Indy, vous pourriez regarder pour WinInet de code basé sur, il ya beaucoup de disponibles en ligne. Voici un simple: http://www.explainth.at/en/delphi/winwrap.shtml
Voici un exemple à partir d'un plus grand ensemble commercial: http://www.clevercomponents.com/articles/article009/httppost.asp
Ou, il vous suffit d'utiliser ce qui est sur StackOverflow:
Comment envoyer une Requête HTTP de type POST en Delphi en utilisant des api WinInet