First of all, this problem report pertains to the JUCE tip, retrieved with git today. It is general for all platforms but the effect is not as bad on windows as it is on MAC. I have not tested on other platforms.
I am writing a program that has some client-functionality towards a WCF service on a Windows Webserver (IIS7). For such a client request to be "approved" by IIS, it must have "Content-Type: text/xml; charset=utf8" in its headers. Juce gives the opportunity to explictly define header fields - the problem is that Juce sets Content-Type (to application/x-www-form-urlencoded), even if the user code has provided a Content-Type. In the windows case, on the wire this results in a valid header (I think the lower windows layers take the last of the Content-Type's which happens to be the user-provided one), but on MAC, the lower layers choose to COMBINE the two values, which IIS (and probably many other servers) doesn't accept (from actual packet: Content-Type: application/x-www-form-urlencoded,text/xml; charset=utf-8)
I have temporarily fixed it by letting Juce (in juce_URL.cpp, URLHelpers::createHeadersAndPostData) check if the user has provided a content-type header, before applying one. For this to work, URL::createInputStream must initialize "headers" to the value of the user-provided headers, instead of as now, add the user-provided headers after the ones created by URLHelpers::createHeadersAndPostData.
I hope you will consider changing this in Juce. I can of course provide my working code if you like.
And last but not least, thank you for an excellent framework!