I am programming a client interface to a restful web service in python and unfortunately the web service requires custom headers to be present in the request. I have been using Requests for this however the web service also requires the headers to be in a specific order in the request. I haven't been able to figure out how Requests orders the headers and see if there is a way to be able to control this ordering.
I am also open to using another module other than Requests in my application if someone has a recommendation.
Updated answer
The answer below concerns versions below 2.9.2. Since version 2.9.2 (around April 2016) using an
OrderedDict
works again.Old answer
It looks like it was possible some time ago using just the built-in functionality (issue 179). I think it is not anymore (issue 2057) and one of the reasons is mentioned in another comment by num1. I have used a following solution/workaround.
In the example headers are just sorted but one can order them in any way. I chose that method after going through
requests
code and reading the method's docstring:For absolute control one could override the
send
method probably.You can try to use the
OrderedDict
class to store the headers, instead of request's default one: