Using the cfhttp Post method
Use
the Post method to send cookie, form field, CGI, URL, and file variables
to a specified ColdFusion page or CGI program for processing. For
Post operations, use the cfhttpparam tag for each variable
you want to post. The Post method passes data to a specified ColdFusion
page or an executable that interprets the variables being sent and
returns data.
For example, when you build an HTML form using the Post method,
you specify the name of the page to which form data is passed. You
use the Post method in cfhttp in a similar way. However,
with the cfhttp tag, the page that receives the Post
does not, itself, display anything.
Pass variables to a ColdFusion page
Create a ColdFusion page with the following content:
<html>
<head>
<title>HTTP Post Test</title>
</head>
<body>
<h1>HTTP Post Test</h1>
<cfhttp method="Post"
url="http://127.0.0.1:8500/myapps/post_test_server.cfm">
<cfhttpparam type="Cookie"
value="cookiemonster"
name="mycookie6">
<cfhttpparam type="CGI"
value="cgivar "
name="mycgi">
<cfhttpparam type="URL"
value="theurl"
name="myurl">
<cfhttpparam type="Formfield"
value="twriter@adobe.com"
name="emailaddress">
<cfhttpparam type="File"
name="myfile"
file="c:\pix\trees.gif">
</cfhttp>
<cfoutput>
File Content:<br>
#cfhttp.filecontent#<br>
Mime Type:#cfhttp.MimeType#<br>
</cfoutput>
</body>
</html>
Replace the path to the GIF file to a path on your server
(just before the closing cfhttp tag).
Save the file as post_test.cfm in the myapps directory under
your web_root.
Note: Write a page to view the variables, as described
in next procedure.
Reviewing the code
The following table describes the code and its
function:
Code
|
Description
|
<cfhttp method="Post" url="http://127.0.0.1:8500/myapps/post_test_server.cfm">
|
Post an HTTP request to the specified page.
|
<cfhttpparam type="Cookie" value="cookiemonster" name="mycookie6">
|
Send a cookie in the request.
|
<cfhttpparam type="CGI" value="cgivar " name="mycgi">
|
Send a CGI variable in the request.
|
<cfhttpparam type="URL" value="theurl" name="myurl">
|
Send a URL in the request.
|
<cfhttpparam type="Formfield" value="twriter@adobe.com" name="emailaddress">
|
Send a Form field in the request.
|
<cfhttpparam type="File" name="myfile" file="c"\pix\trees.gif">
|
Send a file in the request.
The </> tag
ends the http request.
|
<cfoutput>
File Content:<br>
#cfhttp.filecontent#<br>
|
Display the contents of the file that the
page that is posted to creates by processing the request. In this
example, the contents is the output from the cfoutput tag
in server.cfm.
|
Mime Type: #cfhttp.MimeType#<br>
</cfoutput>
|
Display the MIME type of the created file.
|
View the variables
Create a ColdFusion page with the following content:
<html>
<head><title>HTTP Post Test</title> </head>
<body>
<h1>HTTP Post Test</h1>
<cffile destination="C:\temp\"
nameconflict="Overwrite"
filefield="Form.myfile"
action="Upload"
attributes="Normal">
<cfoutput>
The URL variable is: #URL.myurl# <br>
The Cookie variable is: #Cookie.mycookie6# <br>
The CGI variable is: #CGI.mycgi#. <br>
The Formfield variable is: #Form.emailaddress#. <br>
The file was uploaded to #File.ServerDirectory#\#File.ServerFile#.
</cfoutput>
</body>
</html>
Replace C:\temp\ with an appropriate directory path on your
hard drive.
Save the file as post_test_server.cfm in the myapps directory
under your web_root.
View post_test.cfm in your browser and look for the file
in C:\temp\ (or your replacement path).
Reviewing the code
The following table describes the code and its
function:
Code
|
Description
|
<cffile destination="C:\temp\" nameconflict="Overwrite" filefield="Form.myfile" action="Upload" attributes="Normal">
|
Write the transferred document to a file
on the server. You send the file using the type="File" attribute,
but the receiving page gets it as a Form variable, not a File variable.
This cffile tag creates File variables,
as follows.
|
|
Output information. This page does not display
the results. They are passed back to the posting page in its cfhttp.filecontent variable.
|
The URL variable is: #URL.myurl# <br>
|
Output the value of the URL variable sent
in the HTTP request.
|
The Cookie variable is: #Cookie.mycookie# <br>
|
Output the value of the Cookie variable
sent in the HTTP request.
|
The CGI variable is: #CGI.mycgi# <br>
|
Output the value of the CGI variable sent
in the HTTP request.
|
The Form variable is: #Form.emailaddress#. <br>
|
Output the Form variable sent in the HTTP
request. You send the variable using the type="formField" attribute
but the receiving page gets it as a Form variable.
|
The file was uploaded to #File.ServerDirectory#\#File.ServerFile#.
</cfoutput>
|
Output the results of the cffile tag
on this page. This time, the variables really are File variables.
|
Return results of a CGI program
The
following code runs a CGI program search.exe on a website and displays
the results, including both the MIME type and length of the response.
The search.exe program must expect a “search” parameter.
<cfhttp method="Post"
url="http://www.my_favorite_site.com/search.exe"
resolveurl="Yes">
<cfhttpparam type="Formfield"
name="search"
value="ColdFusion">
</cfhttp>
<cfoutput>
Response Mime Type: #cfhttp.MimeType#<br>
Response Length: #len(cfhttp.filecontent)# <br>
Response Content: <br>
#htmlcodeformat(cfhttp.filecontent)#<br>
</cfoutput>