I have a Java application that uses the Jersey implementation of JAX-RS 2.0 and I want to enable gzip compression on the client side. The server has it enabled and I have verified that by looking in Chrome at the "Size/Content" in the Developer Tools for the specific URL the client is using.
I see a lot of information and documentation floating around the web about setting the HTTP Headers with filters and decoding response bodies with interceptors and I cannot decipher what I actually need to code in the client.
I have this code:
private synchronized void initialize() {
Client client = ClientBuilder.newClient();
client.register(new HttpBasicAuthFilter(username, password));
WebTarget targetBase = client.target(getBaseUrl());
...
}
What should I add to enable compression?
Modify to look like:
In this example, there are some fields and methods being referenced that I don't include in the example (such as
MEDIA_TYPE
), you'll have to figure those out yourself. Should be pretty straight forward.I verified this worked by analyzing the response headers and monitoring the application network usage. I got a 10:1 compression ration according to the network usage checks I did. That seems about right, yay!
In my example (with JAX RS 2.x) and Jersey where multipart is being used, none of the above worked but this did:
Essentially same as the above answers but had to add that one property for "gzip".
managed to do it with:
Pretty much the same as @Jason, but
EncodingFilter
detects theGzipEncoder
for me.