我目前使用python 2.7請求庫,並且不支持有序標題。我可以把有序的數據發佈和獲取(像一個有序的字典),但是根本不支持頭文件。甚至沒有在python 3Python - 有序標題HTTP請求
我知道HTTP協議的RFC,表明標題的順序是微不足道的,但問題是,我正在實施的第三方服務不起作用,除非標題是按順序。我知道這是因爲我已經在其他語言中實現了有序的頭部請求,並且它可以工作(如java),並且我確信100%是這樣,因爲我檢查了burp和wireshark以確保這是請求之間的唯一區別。但是我已經有了超過5000行python,所以在那裏遷移是一個如此痛苦的決定,因爲這樣的問題。
我唯一想到的解決方案是在TCP上自己實現http協議,但這不是一個聰明的解決方案。我無法獲得與可用解決方案相同的代碼質量,並且這是我的代碼可能出現的失敗點。
看到一個簡單的代碼例子,我有以下:
data=(("param1","something"),
("param2","something_else"))
headers={'id': 'some_random_number',
'version':'some_random_number' ,
'signature':'some_random_number' ,
'Content-Type':'application/x-www-form-urlencoded' ,
'charset':'utf-8' ,
'Content-Length':str(len(urllib.urlencode(data))) ,
'name':'random' ,
'User-Agent':'Firefox' ,
'Connection':'Keep-Alive' ,
'Accept-Encoding':'gzip'}
requests.post("myservice.com",headers=headers, data=data)
請求頭的順序發送這樣的(而不是實際的命令,只是一個例子來了解我的點)
'version':'some_random_number'
'Accept-Encoding':'gzip'
'id': 'some_random_number'
'User-Agent':'Firefox'
'signature':'some_random_number'
'Connection':'Keep-Alive'
'Content-Type':'application/x-www-form-urlencoded'
'charset':'utf-8'
'name':'random'
這對我來說是一個問題。我不知道現在該做什麼。任何幫助不勝感激。我試過的urllib庫不支持
會下令字典工作? –
不,使用有序的詞典爲請求庫提供.items()異常,因爲請求庫使用items()方法解析頭並且沒有對有序字典的支持。它曾經在一些非常舊的請求版本中工作,這是我在另一個stackoverflow問題上閱讀的版本。 –
你可以傳遞一個自定義類似dict的對象給'request',它有一個自定義的'.items()',它控制返回的頭文件的順序嗎?如果'request'保持這個順序,那麼你最好去 – user2722968