Well, it's just theory, as I never get in touch with hooking managed function. And I guess you can't hook managed code with a native module.
But the managed code is just a layer over the native code. The .net runtime (CLR) has to JIT-compile or interpret the .net bytecode to execute it. So whenever an managed application sends out a HttpWebRequest there have to be a native packet sent by a native socket (most likely over the native winapi). So your native dll could hook these functions (which is quite easy, just like you said) and log / analyse them.
Of course you can play around a bit and see if a winapi call to send a packet always comes from the same location (mscoree.dll maybe, I don't know) so you would know which .net function equivalent it is or if one HttpWebRequest instance always has the same socket. Maybe these things could be usefull for you.
I hope that I was able to help you at least a bit

Jeoni