Thursday, November 27, 2008

Essential HTTP Client Checklist and CFHTTP (Pt. 2)

In a previous post I discussed a list of criteria for a modern HTTP client and compared them to the out of the box features of the Adobe ColdFusion tag CFHTTP.  CFHTTP supports all of the 'must-have' features but provides little in the way of 'optional extras'. Critically common authentication options (such as digest and NTLM) are not supported.

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.

No comments:

Post a Comment