I know this particular URL will return "Not Found" if there is something wrong with the request (I have tried so many options now). When you say print the headers and body myself do you mean not to use HTTP::Request to create the request?
Yes - getting anything that triggers a successful request is the most important thing. After that, you can try to coax HTTP::Request to produce the appropriate headers etc.
From a quick Google search, it seems that you enable chunked transfers globally in HTTP::Request::Common via