Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at cf.Objective() 2011 (Minneapolis, MN) with: Angela Buraglia

CFHTTPSession.cfc Gets Request / Response Logging

Posted by Ben Nadel
Tags: ColdFusion

I have added logging to my CFHTTPSession.cfc ColdFusion component. For those of you who don't know what CFHTTPSession.cfc is, it's a ColdFusion component that can be used to perform multiple CFHTTP requests to the same domain. The beauty behind this request wrapper is that CFHTTPSession.cfc automatically parses, stores, and re-posts any cookies that were returned in any given request. In doing so, it allows the programmer to easily maintain an actual user session across successive CFHTTP requests.

Now, when you instantiate the CFHTTPSession.cfc class, you have the option to pass in a full log file path. If you do so, then each request and each response is appended to the given TXT file. This should make debugging the request / response cycle much easier.

For more information, see my CFHTTPSession.cfc project page.




Reader Comments

Hey Ben, I had glanced at this before but used some of my own functionality. Now in trying to refactor some code I'm giving it an actual try out. So far it is very easy to use and quite helpful.

I did find a minor bug when trying to manually set the user agent. The SetUserAgent function accepts one argument of name "Value".

However, the function refers to ARGUMENTS.UserAgent. I think that argument name is meant to be UserAgent. (Line 978).

Thanks for the awesome work you do.

Reply to this Comment

Thanks again for your work on this, I have found this component to be wonderfully useful for something CF doesn't handle very well out of the box. It's also taught me quite a bit about how browsers interact with servers as well.

Reply to this Comment

Love your code. I think I might be using this cfc wrong. here is my example:

cfset objResponse = objHttpSession.NewRequest()
i can see the cookies in
cfdump objResponse.responseheader['set-cookie']
and in
objHttpSession.getCookies()

but if i objHttpSession.AddCookie('TESTING', 'tester')
and then try
objHttpSession.getCookies()
i dont see TESTING

am i using this wrong?

Thanks, Jim

Reply to this Comment

@Jim,

When you "Add" cookies or URL parameters or FORM parameters, they are send with the next request. Basically, under the hood, when you call things like AddUrl() and AddFile() it's building up a collection of CFHttpParams to be sent along with the next request.

Does that help at all?

Reply to this Comment

@Ben Nadel,

Thank you for getting back so quickly! That helps. I have a site with a lot of js setting cookies so it makes it hard to mimic a web user, but your cfc makes things much easier. Thank you.

Jim

Reply to this Comment

@Jim -

You might also want to take a look at CFX_HTTP5.

http://www.cftagstore.com/tags/cfxhttp5.cfm

It will easily handle cookies/sessions and a bunch more. It's also very, very fast and makes some stuff that is harder to do in CFHTTP much easier.

I'm not affiliated with the product in any way but have used it for several years and they continue to update it and add new stuff along the way. It's paid for itself many times over.

Reply to this Comment

@Ben

Just sent you an e-mail through your contact form. I think I might have identified an incorrect behavior in how cookies are set within CFHTTPSession. Hope it's helpful.

Reply to this Comment

Post A Comment

?
You — Get Out Of My Dreams, Get Into My Comments
Live in the Now
Oops!
Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.