I had tried my $req = HTTP::Request->new(GET => $endpoint, Accept => 'application/xml'); using the OP's server, but I still got the "Bad header argument" error. When I switched to using the separate $req->header, then it started working.
Looking at HTTP::Request (quoted below), I originally read it the same way as you, that new() required pairs, and was surprised the code above would still give the error. But on a re-read (underline added):
Constructs a new HTTP::Request object describing a request on the object $uri using method $method. The $method argument must be a string. The $uri argument can be either a string, or a reference to a URI object. The optional $header argument should be a reference to an HTTP::Headers object or a plain array reference of key/value pairs. The optional $content argument should be a string of bytes.
The $header should either be an object or an arrayref. The $content is the content of the request, not of the header. Running the OP code with the headers with your changes, but in an arrayref, eliminates the error: my $req = HTTP::Request->new(GET => $endpoint, [Accept => 'application/xml']);
| [reply] [d/l] [select] |
Very nice (++). Thanks for the research, and "Final Answer".
...it is unhealthy to remain near things that are in the process of blowing up. man page for WARP, by Larry Wall
| [reply] |
| [reply] |