Are there HTTP Client/Server components for Delphi that support iOS? - ios

I am developing a program in Delphi/Object Pascal that acts as an HTTP request router on various platforms. It's a sort of proxy that is designed to pass through certain HTTP requests and field others locally. I have it running on Windows, and would now like to port it to iOS.
The program currently uses the Indy Internet component suite to implement an HTTP Client and HTTP Server. I recently discovered that although these components will compile successfully to iOS using Delphi XE4, they are not supported and will not run.
I am looking for a workable option. I am aware of other component suites such as IP*Works and RealThinClient, but have no experience with them.
Has anyone developed an HTTP Client/HTTP Server application in this environment? I realize that Delphi support for iOS is quite new, as XE4 has only just been released. But XE2 had an iOS solution based on FreePascal (which I initially used to create my program in Lazarus to port to Linux & MacOS). Also XE4 has been in beta test up until this week. So it's possible someone may have tried this by now.

The XE4 feature matrix states:
New in XE4! Indy for iOS
So I believe you can use the version of Indy that ships with the product. It's possible that you are building from out of date source.

Internet Direct (Indy), the communications library that comes with Delphi, supports iOS.

Related

Delphi Webbroker with http.sys

Using Delphi 11 latest version.
Is there a switch to let WebBroker use Windows built-in http.sys server instead of Indy Webserver? If so, how to turn on the SSL certificate as well? I imagine Microsoft's built-in http/https engine would be more robust.
For some reason, I wish to skip ISAPI so would prefer a command-line or Gui version of Webbroker running on Windows.
How robust is the built-in Indy webserver for commercial deployment - meaning up to how many simultaneous connections per second?
I'm asking because DMVC Delphi has an option to use http.sys and it is based on Webbroker, so I thought WebBroker would have supported http.sys by now.
Thanks.
Maybe you can try mORMot.
Really high-performance framework.
You can find almost everything you need to build webservices.

Delphi thick client to web application

I am currently using Delphi 5 and planning to migrate application to latest version(XE3) or to other technology. Main purpose of migration is dont want thick client. In currrent scenario application(exe) gets downloaded to the users local folder and then it runs rom local. Main purpose is dont want to download the application to users machine. .
Wanted to stick with Delphi if that downloading limitation resolved. Is there web solution? or way to access the application from common point without downloading to users machine.
Thanks for the help and suggestions.
Note: There are lots of users who uses these application.
Depending on the type of application you could add web layer around the core functionality of your application.
If you create something like a SOAP or REST interface, you can write a web client in any language that suits. Could be Delphi, or some more web-oriented language like PHP or ASP.Net.
By having a web interface your users can access from any platform.
On the other hand, if your current application is not layered properly, and you've got a lot of code mixed between the GUI and your model, this could be difficult. It would mean rewriting a lot of code, or just accept the fact that your users need Windows, and an .exe file.
At least by using Delphi, your users don't need to download a huge framework that requires administrator privileges to install.
Anyway, you should provide some more information about what you already have, and what type of application it is, how complicated it is, etc.
If you are planning a move to Java Enterprise Edition (Java EE), accessing existing Delphi logic can be achieved using two communication models, using existing commercial and open source solutions:
for synchronous (request/response) style communication between Delphi and Java, there are lightweight web frameworks for Delphi (I wrote this one recently) and open source JSON/XML libraries which can be used for data exchange. This allows the Java application server to access Delphi logic over HTTP
for asynchronous communication, I wrote (commercial) message broker client libraries for Delphi and Free Pascal, they can be used with the Java Message Service (JMS) servers in the JBoss and the GlassFish application server - JBoss and GlassFish already include a messaging solution (HornetQ and Open MQ), as a mandatory part of the full Java EE profile
I also have written some step by step tutorials for JBoss and GlassFish Delphi integration:
Delphi Integration with JBoss Application Server 5
Delphi Integration with the GlassFish v3 Application Server Part 1 - Sending Messages
Delphi Integration with the GlassFish v3 Application Server Part 2 - Receiving Messages

What is the "current" Delphi web app framework?

I'm looking at Delphi web server apps, and the first thing I notice when I go into the New Items dialog is that there are several different frameworks.
WebBroker looks the nicest from a conceptual standpoint, but in the documentation it looks like its DB and session-management code is tied to the BDE, which makes it somewhat less than useful today.
WebSnap looks very similar, but the documentation says it's deprecated and IW ("VCL for the Web") should be used instead.
So I look at IW, and I can't make heads or tails of how it's supposed to work. The sample code is full of stuff that looks like it belongs in a desktop app, like clicking a button to fire an event handler to change the caption of a form element. (Wouldn't that have to be done client-side in JavaScript if we're creating a webpage?)
So what's the current standard framework for building a web server in Delphi?
While there are several commercial options available for writing web apps with Delphi, in my opinion Delphi no longer ships with a modern web development solution included as part of the package.
If I had to give an answer to your question though I would say that the current out of the box Delphi web framework is WebBroker. WebBroker is the only web framework included with Delphi that isn't deprecated or restricted in its functionality.
WebBroker was introduced perhaps as far back as Delphi 4. It's a good honest work horse but it hasn't really been improved much since it was first introduced. It leaves you to do most of the heavy lifting but it also doesn't get in your way. WebSnap and IntraWeb were built using WebBroker as their foundation which gives you idea of the level of services it provides.
A full version of IntraWeb has been bundled with Delphi Enterprise for many years but as of Delphi XE it now has several limitations (no SSL, no ISAPI deployment, 20 minute idle timeout) that will very likely mean you'll need to buy a license from AtoZed to use it seriously.
The version of IntraWeb bundled with Delphi Pro has always been far too limited to be considered anything other than an evaluation version.
Old question but still deserves an up-to-date answer.
Current 'settled in' solutions are:
IntraWeb:
https://www.atozed.com/intraweb/
uniGUI:
http://unigui.com/
Introduction
uniGUI Web Application Framework extends Web application development experience to a new dimension. uniGUI enables Delphi developers to create, design and debug web applications in IDE using a unique set of visual components. Each component is designed to provide same functionality of its counterpart visual component in Delphi VCL. This provides a very comfortable development environment very close to native VCL application development with an easy learning curve. uniGUI Web applications can be deployed to a server using one of the available deployment options such as Windows Service, Standalone Server or ISAPI Module.
Product Highlights:
Based on industry's most advanced JavaScript library Sencha Ext JS.
Includes OEM license for Sencha Ext JS. (Please see licensing for details).
A unique platform to create stateful web applications.
Complete IDE support for creating projects, designing forms, frames and handling data modules.
Advanced support for scripting client side JavaScript events.
Library core is fully optimized to achieve highest level of scalability.
Including advanced Stress Test Tool utility.
Comes with various deployment options: ISAPI Module, Standalone Server and Windows Service.
Supported Delphi versions: Turbo Delphi Pro, Delphi 2006, Delphi 2007, Delphi 2009, Delphi 2010, Delphi XE, XE2, XE3, XE4, X5, XE6, XE7, XE8, Delphi 10 Seattle, 10.1 Berlin, 10.2.3 Tokyo and 10.3.3 Rio (Win32 & Win64 platforms). (Linux support is in the roadmap)
C++ Builder supported.
Supported Browsers: IE 9+, Microsoft Edge, FireFox, Chrome, Safari and Opera
New state-of-the-art uniGUI HyperServer technology.
TMS WebCore:
https://www.tmssoftware.com/site/tmswebcore.asp
RADical Web
Modern SPA web application model
Pure HTML5/CSS3/Javascript based applications
Standard component framework for common UI controls and access to browser features
Debugging in Pascal code via the browser
Backed by a solid & proven Delphi Pascal to Javascript compiler that was years in development
Reuse skills and components Component based RAD development integrated
in the Delphi IDE A truly revolutionary & innovative TMS FNC component
framework that is now also web enabled, allowing to create UI controls
that can be used on VCL, FMX, LCL and WEB! Open to consume other
existing Javascript frameworks & libraries Open to use HTML/CSS for
design Open to use other jQuery controls or even other Javascript
frameworks Offers Pascal class wrappers for jQuery controls from the
jQWidgets library Easy interfacing to REST cloud services including to
TMS XData for database
Easy Deployment Application consists of HTML & Javascript files only
that can be easily deployed on any light or heavyweight webservers Use
any existing load-balancing software and/or techniques for highest
performance Small and convenient debug webserver is included for fast
RAD development
http://docwiki.embarcadero.com/RADStudio/en/DataSnap_Overview_and_Architecture
DataSnap has been there for a long time, and the latest releases is DCOM-free. You can utilize it to build up server side piece (S in both C/S and B/S). Its current role is almost like WCF in .NET world.
Then if you are building a web site front end, you can use IW. But DataSnap makes it even possible to build up front end using PHP or other web technologies.
https://github.com/relativ/pascalweb
PascalWeb use pascalscript compiler , you can create web app, like php or python

Delphi XE2 on iOS with Indy or Third Party Internet Components

Are there third party components available for Delphi XE2 to create iOS applications with Internet support?
For example, the Indy components that ship with Delphi XE2 do not work with a FireMonkey iOS app. I want to be able to communicate with a REST Web Service in my iOS app.
On FPC lists, people complain that the resolving doesn't work properly on iOS, but that the base sockets do work. The question is probably where iOS differs from OS X wrt resolving of DNS names.
I assume something similar is going on with the FPC in under XE2, but am not entirely sure since FM is not VCL, and the event pump might be different which could create additional problems.
Anyway, if you can get it compiled, try with only IPs as host to see if it is a general problem, or the relatively simple DNS resolving biut.
Looks like Real Thin Client has support you need: http://www.realthinclient.com/
Win32 with Delphi 6 - XE; Win32+Win64+MacOSX+iOS with RAD Studio / Delphi XE2

Does Delphi XE2 FireMonkey support Indy for cross-platform apps?

Looking at the new Delphi XE2 with Firemonkey. Considering that it compiles for Windows, Mac OSX and iOS, VCL components are useless in a FireMonkey application.
My question is: Is there/will there be an Indy Firemonkey Edition? Cause I seriously need the IdHTTP.Post();. If not, is there a way to do this in FireMonkey?
I have been googling for quite awhile now, not finding anything. :S
VCL means Visual Component Library. There's nothing about Indy that is "visual" (meaning "seen at runtime"), meaning that "VCL components are useless in a FireMonkey application" has no relevance to Indy.
You can create a new FireMonkey HD application in Delphi XE2, target OS X, and the Indy component pages are still available in the IDE, meaning that they are compatible with supported FireMonkey cross-platform targets. They're also available for FireMonkey HD Windows targets (32 and 64 bit).
Indy ships with the IDE (and has since D6) so there is nothing extra to buy if you already have XE2 installed. Also, Indy is open-source, so you can upgrade an Indy installation using source code from Indy's public access SVN server or mirror.
Regarding FireMonkey, Indy does work in FireMonkey. Indy uses whatever the native socket API is on a given platform (WinSock on Windows, Posix on Mac, libc on Kylix, etc).
The only known gotcha with Indy under FireMonkey at the moment is the TIdAntiFreeze component is not available at design-time. The IDE cannot resolve it correctly due to the non-standard way it is packaged (to be adressed in Indy 11). You can instantiate it programmably in code at run-time, though.
I made a client server example using tcp indy http://www.freelancecode.net/community/viewtopic.php?f=35&t=246
The Components Not Used in iOS Apps DocWiki page for Delphi XE2 lists most of the Indy classes:
The following list is the set of components (along with the used
units) that might be available in the Tool Palette for iOS
applications, but are not supported for iOS applications.

Resources