업데이트 대답
2.9.2 아래의 우려 버전 아래의 대답. 버전 2.9.2 이후 (2016 년 4 월경) OrderedDict
works again을 사용합니다.
올드 대답
그것은 그냥 내장 기능 (issue 179)를 사용하여 몇 시간 전에 가능했던 것 같습니다. 나는 그것이 더 이상 (issue 2057)이 아닌 이유 중 하나가 num1에 의해 다른 의견에 언급되어 있다고 생각합니다. 나는 다음 해결책/해결 방법을 사용했다.
import requests
import collections
class SortedHTTPAdapter(requests.adapters.HTTPAdapter):
def add_headers(self, request, **kwargs):
request.headers = collections.OrderedDict(
((key, value) for key, value in sorted(request.headers.items()))
)
session = requests.Session()
session.mount("http://", SortedHTTPAdapter())
예에서 머리글은 정렬 만되어 있지만 어떤 방식 으로든 정렬 할 수 있습니다. requests
코드를 읽고 메소드의 docstring을 읽은 다음 해당 방법을 선택했습니다.
연결에 필요한 헤더를 추가합니다. v2.0에서 이것은 기본적으로 을 수행하지 않지만, HTTPAdapter <requests.adapters.HTTPAdapter>
클래스를 서브 클래스 화하는 사용자에 의해 무시되도록 남아 있습니다.
절대 제어의 경우 send
메서드를 무시할 수 있습니다.
만약 내가 당신이라면 API 유지 보수 담당자에게 버그 신고서를 제출할 것입니다. 이는 HTTP 사양을 분명히 위반하고 있기 때문입니다. [RFC 2616 섹션 4.2] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2)는 '서로 다른 필드 이름을 가진 헤더 필드를받는 순서는 중요하지 않습니다. '헤더에 특정 순서를 요구하는 것은 불편하지 않을뿐만 아니라 올바르지 않습니다. – rdlowrey
완전히 동의하지만 불행히도 시간이 걸릴 것이며이 프로젝트를 완료해야한다는 압력을 받고 있습니다. 감사. – user2509689