05-16-2019, 06:00 PM
(This post was last modified: 05-16-2019, 06:26 PM by pete@pdmagic.com.)
Hi there! Hope whoever reads this is having a great day!
I've got an Intraweb app that serves up a REST interface. I've also got a Delphi desktop app that consumes the Intraweb apps' REST interface using Indy. I've had it all working both locally and installed as an ISAPI for a while now. ...Until I directed IIS to force all requests to https. The Intraweb app works fine under https. But the desktop app started complaining EIdOSSLCouldNotLoadSSLLibrary. Interestingly, another desktop app (in c#) needed no modifications and has continued to run fine, now accessing the https REST URL.
In fact, here is a live URL: https://dev.governmenttools.com/alpha/cm.../VersionNH
My client code for making the REST call (POST) is below.
So far I haven't done *anything* to the desktop app. I haven't added any DLLs to its path, I haven't changed any code to have it use https, nothing. So here are my questions:
1. Assuming a working non-ssl desktop app, what changes need to be made to support SSL?
2. My desktop app, used for data entry, is currently just a single .exe. I'd love to keep it that way. Is there any way to bundle the functionality needed into the .exe? I'm not beyond adding the dlls as a resource and extracting them before dynamically loading them. Otherwise, I'll need to create an installer.
3. In searching on the web, I see other programmers writing SSL specific Indy code when connecting to https. Is this necessary? From my limited experience, Indy seems to be identifying that it wants to do SSL, but looking for those dll's most likely.
4. Any suggestions? (that's carte blanche to criticize my strategy if you feel so inclined)
Thanks,
Pete
Okay, as my daughter would say - "my bad". Sorry about that.
I could have at least tested the .dll's. I added the dll's to the .exe directory and everything works fine.
So the question is more simple - how to pack into .exe, and any other suggestions?
Thanks for your time.
I've got an Intraweb app that serves up a REST interface. I've also got a Delphi desktop app that consumes the Intraweb apps' REST interface using Indy. I've had it all working both locally and installed as an ISAPI for a while now. ...Until I directed IIS to force all requests to https. The Intraweb app works fine under https. But the desktop app started complaining EIdOSSLCouldNotLoadSSLLibrary. Interestingly, another desktop app (in c#) needed no modifications and has continued to run fine, now accessing the https REST URL.
In fact, here is a live URL: https://dev.governmenttools.com/alpha/cm.../VersionNH
My client code for making the REST call (POST) is below.
So far I haven't done *anything* to the desktop app. I haven't added any DLLs to its path, I haven't changed any code to have it use https, nothing. So here are my questions:
1. Assuming a working non-ssl desktop app, what changes need to be made to support SSL?
2. My desktop app, used for data entry, is currently just a single .exe. I'd love to keep it that way. Is there any way to bundle the functionality needed into the .exe? I'm not beyond adding the dlls as a resource and extracting them before dynamically loading them. Otherwise, I'll need to create an installer.
3. In searching on the web, I see other programmers writing SSL specific Indy code when connecting to https. Is this necessary? From my limited experience, Indy seems to be identifying that it wants to do SSL, but looking for those dll's most likely.
4. Any suggestions? (that's carte blanche to criticize my strategy if you feel so inclined)
Thanks,
Pete
Code:
function TpdHTTPClient.Post( aName : string;
aServiceURL : string;
aParams : TStringList ) : string;
var lHttp :TIDHttp;
lRequestStream, lResponseStream : TStringStream;
begin
lHttp := TIDHttp.Create(nil);
try
ConfigureHttp( lHttp );
result := lHttp.Post( aServiceURL, aParams );
finally
lHttp.Destroy;
end;
end;
procedure TpdHTTPXMLClient.ConfigureHttp(aHttp: TIDHttp);
begin
inherited;
aHTTP.Request.ContentType := 'application/x-www-form-urlencoded';
// aHttp.Request.ContentType := 'application/xml';
end;
Okay, as my daughter would say - "my bad". Sorry about that.
I could have at least tested the .dll's. I added the dll's to the .exe directory and everything works fine.
So the question is more simple - how to pack into .exe, and any other suggestions?
Thanks for your time.