如何讀取原始http文章STRING。我已經發現了幾種閱讀帖子解析版本的解決方案,但是我正在處理的項目提交了一個沒有標題的原始xml負載。所以我試圖找到一種方法來讀取發佈數據,而不會將其解析爲key => value數組。Python:BaseHTTPRequestHandler - 讀取原始文章
回答
我認爲self.rfile.read(self.headers.getheader('content-length'))
應該將原始數據作爲字符串返回。 根據該文檔直接BaseHTTPRequestHandler類中:
- rfile is a file object open for reading positioned at the
start of the optional input data part;
self.rfile.read(int(self.headers.getheader('Content-Length')))
將返回原始HTTP POST數據爲字符串。
其分解:
- 標題 '的Content-Length' 指定多少個字節的HTTP POST數據包含。
self.headers.getheader('Content-Length')
以字符串的形式返回內容長度(標題的值)。- 必須先將其轉換爲一個整數,然後才能將其作爲參數傳遞給
self.rfile.read()
,因此請使用int()
函數。
另外請注意,在標題名稱是大小寫敏感的,以便它具有被指定爲唯一的「內容長度」。
編輯:顯然頭域不區分大小寫(至少在Python 2.7.5),我相信這是因爲https://tools.ietf.org/html/rfc2616狀態正確的行爲:
每個頭域由一個名字後面的 一個冒號(「:」)和字段值。字段名稱 不區分大小寫。
請更詳細一點,我不知道你在暗示什麼。 –
@jb:我在答案中增加了更多細節。讓我知道是否有任何具體的東西需要進一步闡述。 –
@SindhuriKuppasad,標題名稱不區分大小寫。下面的語句都返回我測試中的內容長度: 'self.headers.getheader('content-length')''和'self.headers.getheader('content-LENGTH')' – famzah
- 1. SAS - 讀取原始/分隔文件
- 2. ProtoBuf-Net做原始讀取
- 3. Django參考原始文章數據
- 4. 使用AFHTTPSessionManager的原始XML文章
- 5. 閱讀原始文件C++
- 6. 用rvest讀取文檔正文的原始文本?
- 7. 閱讀Android原始文本文件
- 8. Perl6:如何讀取STDIN原始數據?
- 9. 多線程讀取原始類型
- 10. 以原始XML讀取MSMQ消息
- 11. 從套接字讀取原始數據
- 12. 在Nodejs中讀取原始http消息
- 13. 從串口讀取原始字節
- 14. 使用ConfigParser讀取原始部分
- 15. 原始輸入和讀取數據
- 16. 用PIL和Python讀取原始圖像
- 17. 在iphone SDK中讀取原始音頻
- 18. Magick ++無法讀取原始nef圖像
- 19. utils的不能讀取原始文本文件
- 20. 如何從SD卡讀取原始文本文件?
- 21. 如何從原始文件夾讀取pdf文件?
- 22. PHP文件上傳:讀取原始文件數據
- 23. ExoPlayer從原始文件夾中讀取mp3文件
- 24. 未正確讀取Android文本文件(在原始目錄中)
- 25. 如何獲取隨機未讀文章?
- 26. 閱讀原始文件與Unicode字符
- 27. 閱讀原始音頻文件
- 28. 閱讀原始內容的PDF文件
- 29. 閱讀Facebook文章
- 30. 如何在Akamai HD上讀取原始文件?
嘗試並做了一些快速的搜索後,此操作會阻止我執行以及其他操作。 – kwolfe
需要提供內容長度:data = self.rfile.read(int(self.headers.getheader('content-length'))) – kwolfe
是的,對不起。它是阻塞的,因爲rfile對象是一個套接字,並且調用'read()'基本上是說'讀直到沒有什麼可以讀取',但只要套接字是打開的,它就會讀更多,所以它掛起並等待傳入的內容。通過總是指定多少內容來讀取服務器,服務器避免了掛起。對不起,我應該把它放在首位。 – smakateer