Using cfhttp to interact with the web

The  cfhttp  tag, which lets you retrieve information from a remote server, is one of the more powerful tags in the CFML tag set. You can use one of two methods Get or Post to interact with a remote server using the  cfhttp  tag:

  • Using the Get method, you can only send information to the remote server in the URL. This method is often used for a one-way transaction in which  cfhttp  retrieves an object.
  • Using the Post method, you can pass variables to a ColdFusion page or CGI program, which processes them and returns data to the calling page. The calling page then appears or further processes the data that was received. For example, when you use  cfhttp  to Post to another ColdFusion page, that page does not appear. It processes the request and returns the results to the original ColdFusion page, which then uses the information as appropriate.

Using the cfhttp Get method

You use Get to retrieve files, including text and binary files, from a specified server. The retrieved information is stored in a special variable, cfhttp.fileContent. The following examples show several common Get operations.

Retrieve a file and store it in a variable
  1. Create a ColdFusion page with the following content:

    <head>
    <title>Use Get Method</title>
    </head>
    <body>
    <cfhttp
    method="Get"
    url="http://www.adobe.com"
    resolveurl="Yes">
    <cfoutput>
    #cfhttp.FileContent# <br>
    </cfoutput>

    </body>
    </html>

  2. (Optional) Replace the value of the url attribute with another URL.
  3. Save the file as get_webpage.cfm in the myapps directory under your web_root and view it in the web browser.The browser loads the web page specified in the  url  attribute.
Reviewing the code

The following table describes the code and its function:

Code

Description

 

<cfhttp method="Get" url="http://www.adobe.com" resolveurl="Yes">

Get the page specified in the URL and make the links absolute instead of relative so that they appear properly.

 

#cfhttp.FileContent# <br>
</cfoutput>

Display the page, which is stored in the variable cfhttp.fileContent, in the browser.

Get a web page and save it in a file
  1. Create a ColdFusion page with the following content:

    <head>
    <title>Use Get Method</title>
    </head>
    <body>

    <cfhttp
    method = "Get"
    url="http://www.adobe.com/software"
    path="c:\temp"
    file="adobe_software.htm">
    </body>
    </html>

  2. (Optional) Replace the value of the url attribute with another URL and change the filename.
  3. (Optional) Change the path from C:\temp to a path on your hard drive.
  4. Save the page as save_webpage.cfm in the myapps directory under your web_root directory.
  5. Go to the specified path and view the file that you specified in a text editor (using the values specified in step 1, the path is C:\temp\macr_software.htm).The saved file does not appear properly in your browser because the Get operation saves only the specified web page HTML. It does not save the frame, image, or other files that the page could include.
Reviewing the code

The following table describes the code and its function:

Code

Description

 

method = "Get"
url="http://www.adobe.com/software"
path="c:\temp"
file="macr_software.htm">

 

Get the page specified in the URL and save it in the file specified by the path and file attributes.When you use the path and file attributes, ColdFusion ignores any resolveurl attribute. As a result, frames and other included files cannot appear when you view the saved page.

Get a binary file and save it
  1. Create a ColdFusion page with the following content:

    method="Get"
    url="http://www.adobe.com/adobe/accessibility/images/spotlight.jpg"
    path="c:\temp"
    file="My_SavedBinary.jpg">
    <cfoutput>
    #cfhttp.MimeType#
    </cfoutput>

  2. (Optional) Replace the value of the url attribute with the URL of a binary file that you want to download.
  3. (Optional) Change the path from C:\temp to a path on your hard drive.
  4. Save the file as save_binary.cfm in the myapps directory under your web_root and open it in the web browser to view the MIME type.
  5. (Optional) Verify that the binary file now exists at the location you specified in the path attribute.
Reviewing the code

The following table describes the code and its function:

Code

Description

 

<cfhttp method="Get" url="http://www.adobe.com/adobe/accessibility/images/spotlight.jpg" path="c:\temp" file="My_SavedBinary.jpg">

 

Get a binary file and save it in the path and file specified.

 

#cfhttp.MimeType#
</cfoutput>

Display the MIME type of the file.

Note: Prior to ColdFusion 11, CFHTTP could only execute URLs which had either no authentication in the web server (anonymous access)  or Basic authentication (in which case the authtype="basic" attribute must be used with username and password attributes.) ColdFusion 11 added support for Windows NTLM authentication, in which case the authtype=" ntlm " attribute must be used which has associated domain and workstation attributes.)

Get help faster and easier

New user?