我正在澤西島2中編寫RESTful網(wǎng)絡服務。我想支持響應的Gzip編碼。按照這個答案,我在課堂上啟用了 。org.glassfish.jersey.server.filter.EncodingFilterResourceConfigpublic class MyWebService extends ResourceConfig { public MyWebService() { register(EncodingFilter.class); register(GZipEncoder.class); register(DeflateEncoder.class); }}在我的資源類上,我返回一個對象。javax.ws.rs.core.Response@GET@Path("api/configs") public Response listConfigs() throws Exception { List<UserConfig> configs = configService.getAll(); return Response.ok().entity(configs).build();}現(xiàn)在,當我點擊此api時,我得到一個響應,但響應標頭不包含標頭,而是包含.Content-EncodingTransfer-Encoding: chunked請求:> GET /api/configs HTTP/1.1> Accept-Encoding: gzip響應:> HTTP/1.1 200 > Transfer-Encoding: chunked* Received 14.8 KB chunk* Received 504 B chunk* Received 15.2 KB chunk* Received 506 B chunk* Received 15.1 KB chunk* Received 514 B chunk響應中沒有標頭,也沒有任何標頭。Content-Encoding: gzipContent-Length我正在使用 .Jersey 2.27Tomcat 9我是否缺少任何其他配置?如何獲取這兩個標頭,并以 gzip 壓縮而不是接收分塊響應的形式獲取響應?編輯:我注意到當我發(fā)送大文件(>1000 KB)時,我同時獲得和標頭。Content-Encoding: gzipTransfer-Encoding: chunked
1 回答

ibeautiful
TA貢獻1993條經(jīng)驗 獲得超6個贊
是否使用或完全由容器自行決定。這取決于允許的緩沖區(qū)大小。Transfer-EncodingContent-Length
如果容器必須設置標頭,則必須事先知道壓縮響應的長度,因此,容器必須在內(nèi)存中緩沖整個響應。Content-Length
對于澤西島,內(nèi)容長度緩沖區(qū)大小由 定義。缺省情況下,此值為 。ServerProperties.OUTBOUND_CONTENT_LENGTH_BUFFER8192 bytes
你可以從你的類中輕松增加這個:MyWebService
public class MyWebService extends ResourceConfig {
public MyWebService() {
register(EncodingFilter.class);
register(GZipEncoder.class);
register(DeflateEncoder.class);
...
property(ServerProperties.OUTBOUND_CONTENT_LENGTH_BUFFER, 32768);
}
}
希望這有幫助。
添加回答
舉報
0/150
提交
取消