So what alternatives are there to CFHTTP?
Before I look at Java libraries I thought I would do a quick google for a familiar face: The custom tag CFX_HTTP5, available from the CFTagStore. It looks like this ancient custom tag has recently been retested for ColdFusion 8 and shows less signs of being the abandonware it threated to become a few years ago. I can not speak to the tags merits directly since I have never used it, but it claims to support NTLM authentication among other things (like multi-threading, which is pretty redundant now ColdFusion has the CFTHREAD tag).
Here is a list of features from the TagStore. It looks like CFX_HTTP5 is (or was) the top selling ColdFusion tag.
- Take complete control over HTTP request and response (like Referer, Content-type, cookies, redirects, and so on).
- Control and report authentication scheme to be used in HTTP request: Basic, NTLM, Digest, and others.
- Fixes most of known CFHTTP-related problems in ColdFusion 4.5, 5.0, and MX.
- Use tag's asynchronous mode to execute many HTTP requests SIMULTANEOUSLY within the SAME ColdFusion page.
- Execute HTTP requests on background, while reading a database, for example.
- Progress monitoring of long-running downloads.
- Selective downloads based on specified content types.
- Tag maintains its own independent of ColdFusion threading and requests queuing.
- Increase the performance of your Web-site by deploying true multithreaded applications.
- Sessions - chained HTTP requests that share state and authetication credentials.
- Trouble-free HTTPS communications.
- Advanced timeout settings - both TCP/IP and HTTP-based.
- Very small executable. No external dependencies, except WinHttp API.
- Built-in GZIP decompression of the content.
- Built-in base64 encoding of binary content.
- Client-side Digital Certificates support.
- Unicode and Code Pages support (CF MX and later).
- Able to support access to any Web-service.
As you can see the tag supports both NTLM and GZIP compression, but adherence to some of the 'Must-have' features is not readily apparent.
Stay tuned; The next post I will look at closer at the available Java libraries.