Bob Balaban's Blog

     
    alt

    Bob Balaban

     

    Using Fiddler to monitor HTTP traffic in Domino Java agents

    Bob Balaban  March 14 2011 03:15:00 AM
    Greetings, Geeks!

    If you're writing Domino Java agents that use HTTP requests to talk to the Internets, you might need to debug your code by capturing the actual bits that leave your computer as Web requests, or even by looking at the responses that come back.

    I recently had to do just that for a customer project. I could write debug logs for the URLs and "payloads" that I was sending and receiving, but you don't easily get to see the HTTP headers that come and go. I found that I could download and configure Fiddler (it's free here) to reveal all, for both "normal" HTTP and also for HTTPS connections.

    First of all, if you're debugging Java agents for Notes or Domino, I hope you're doing it in Eclipse, as described in my "2-Headed Beast" posting.

    There's only 1 little trick you need to know to make it work properly. Because Fiddler acts as a "proxy", inserting itself between your program and your network you have to tell Java to send HTTP commands to Fiddler, instead of directly to your network adapter (other programs, like the Chrome client for GMail automatically look for proxies, and require no special configuration). The way you tell Eclipse to do what you want is to go to the "Run Configuration" (or "Debug Configuration") dialog, click on the "Arguments" tab, and enter these JVM arguments into the "VM arguments" box:

    -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888

    Click "Apply", and you're all set. Launch Fiddler before you run/debug your code, and it will capture all the HTTP traffic out and in. Click the "Raw" button in Fiddler to see everything (outgoing in the top pane, incoming in the bottom pane), including headers. Voilà! It's especially fun to use with Web Services.

    What about doing this in Domino Designer? I haven't found an equivalent setting that allows me to specify the extra JVM arguments that Fiddler needs. It may be that if you can tweak the Run Configuration for your agents in Designer (see my blog post on how to do that), you can get it to work - I haven't tried it.

    What about LotusScript? Well, unfortunately, LotusScript has never had native HTTP capabilities (probably never will). Most people who want to use HTTP from a LotusScript program use outside libraries that you can invoke using DECLARE statements, or (on Windows systems), use the COM interfaces to libraries such as MSXML.

    Well, there you have it. Happy coding! Geek ya later!

    (Need expert application development architecture/coding help?  Want me to help you invent directory services based on RDBMS? Need some Cloud-fu or some web services? Contact me at: bbalaban, gmail.com)
    Follow me on Twitter @LooseleafLLC
    This article ©Copyright 2011 by Looseleaf Software LLC, all rights reserved. You may link to this page, but may not copy without prior approval.

    Comments

    1Duncan Bradley  3/14/2011 6:50:07 AM  Using Fiddler to monitor HTTP traffic in Domino Java agents

    I do this in Java agents with:

    System.setProperty("java.net.useSystemProxies", "true");

    This makes java use the operating system proxy settings, and as Fiddler initialises these, all your java http connections will be logged.

    2Bob Balaban  3/14/2011 8:27:10 AM  Using Fiddler to monitor HTTP traffic in Domino Java agents

    @Duncan - Great tip, thanks!

    3Shane Hollis  3/16/2011 1:44:25 AM  Hi Bob

    Hi Bob,

    Dont know if you will remember me but you dropped by and had a meal with us while you were in NZ (Christchurch). I still have the loose leaf tea shirt all though if it gets any more holes in it I wont be able to use it as a tea straienr any more (heheh).

    Back doing Lotus dev work - puttin gNotes into buisnesses (mostly smaller ones) using domino Express. Working well for them.

    Can you recommend any good discussion groups or sites? THe old LNotes mail list used to be brilliant but most of the sites I visted recently seem quiet - old.

    Hope all is good in your world. If you ever visit chch there is a bottle or red with your name n it.

    Shane