2016-09-27 56 views
0

我寫一些簡單的原型龍捲風的Web應用程序,發現龍捲風未能在HTTP請求主體與龍捲風Web應用程序無法解碼壓縮的HTTP體

Error -3 while decompressing: incorrect header check 

從龍捲風的web應用程序中的一個進行解碼,我通過使用zlib壓縮主體來發送http請求。

http_body = zlib.compress(data) 

而且還增加了HTTP標頭:

'Content-Encoding': 'gzip' 

然而,當我接收在另一個龍捲風web應用此http請求,我看到它導致如上所述解壓縮失敗。

示例代碼來處理HTTP請求:

class MyRequestHandler(tornado.web.RequestHandler): 
    def post(self): 
     global num 
     message = self.request.body 
     self.set_status(200) 

我也保證decompress_request =真應用時聽。

我檢查了龍捲風文檔和更早的帖子,沒有發現任何關於壓縮的http正文部分或它的任何示例。提到的唯一的東西就是decompress_response參數,它只是確保來自服務器的壓縮http響應。

我在這裏是否缺少任何設置?

回答

1

gzipzlib都基於相同的基礎壓縮算法,但它們不是相同的東西。您必須使用gzip,而不僅僅是zlib這裏:

def post_gzip(self, body): 
    bytesio = BytesIO() 
    gzip_file = gzip.GzipFile(mode='w', fileobj=bytesio) 
    gzip_file.write(utf8(body)) 
    gzip_file.close() 
    compressed_body = bytesio.getvalue() 
    return self.fetch('/', method='POST', body=compressed_body, 
         headers={'Content-Encoding': 'gzip'}) 

一些zlib功能也採取使他們產生gzip -format輸出神祕的選項。這些可以與zlib.decompressobjzlib.compressobj一起使用來進行流式壓縮和解壓縮。

+0

Thianks Ben。這有助於。 – sudeshm