下面列出了怎么用com.sun.jersey.api.client.filter.GZIPContentEncodingFilter的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Build the Client used to make HTTP requests with the latest settings,
* i.e. objectMapper and debugging.
* TODO: better to use the Builder Pattern?
*/
public ApiClient rebuildHttpClient() {
// Add the JSON serialization support to Jersey
JacksonJsonProvider jsonProvider = new JacksonJsonProvider(objectMapper);
DefaultClientConfig conf = new DefaultClientConfig();
conf.getSingletons().add(jsonProvider);
Client client = Client.create(conf);
if (debugging) {
client.addFilter(new LoggingFilter());
}
//to solve the issue of GET:metadata/:guid with accepted encodeing is 'gzip'
//in the past, when clients use gzip header, actually it doesn't trigger a gzip encoding... So everything is fine
//After the release, the content is return in gzip, while the sdk doesn't handle it correctly
client.addFilter(new GZIPContentEncodingFilter(false));
this.httpClient = client;
return this;
}
/**
* Build the Client used to make HTTP requests with the latest settings,
* i.e. objectMapper and debugging.
* TODO: better to use the Builder Pattern?
* @return API client
*/
public ApiClient rebuildHttpClient() {
// Add the JSON serialization support to Jersey
JacksonJsonProvider jsonProvider = new JacksonJsonProvider(objectMapper);
DefaultClientConfig conf = new DefaultClientConfig();
conf.getSingletons().add(jsonProvider);
Client client = Client.create(conf);
client.addFilter(new GZIPContentEncodingFilter(false));
if (debugging) {
client.addFilter(new LoggingFilter());
}
this.httpClient = client;
return this;
}
@Test
public void validateSignatureWhenContentIsPojo() throws Exception {
Connection connection = null;
try {
// Start the server
RequestConfiguration requestConfiguration =
RequestConfiguration.builder().withApiKeyQueryParamName("passkey")
.withSignatureHttpHeader("duck-duck-signature-header")
.withTimestampHttpHeader("duck-duck-timestamp-header")
.withVersionHttpHeader("duck-duck-version-header")
.build();
ValidatingHttpServer server = new SignatureValidatingHttpServer(port, secretKey, requestConfiguration);
connection = server.connect();
// Create a client with the filter that is under test
Client client = createClient();
client.addFilter(new HmacClientFilter(apiKey, secretKey, client.getMessageBodyWorkers(), requestConfiguration));
client.addFilter(new GZIPContentEncodingFilter(true));
// Send a pizza in the request body
Pizza pizza = new Pizza();
pizza.setTopping("olive");
client.resource(server.getUri())
.type(MediaType.APPLICATION_JSON_TYPE)
.put(pizza);
} finally {
if (connection != null) {
connection.close();
}
}
}
/**
* Build the Client used to make HTTP requests with the latest settings,
* i.e. objectMapper and debugging.
* TODO: better to use the Builder Pattern?
* @return API client
*/
public ApiClient rebuildHttpClient() {
// Add the JSON serialization support to Jersey
JacksonJsonProvider jsonProvider = new JacksonJsonProvider(objectMapper);
DefaultClientConfig conf = new DefaultClientConfig();
conf.getSingletons().add(jsonProvider);
Client client = Client.create(conf);
client.addFilter(new GZIPContentEncodingFilter(false));
if (debugging) {
client.addFilter(new LoggingFilter());
}
this.httpClient = client;
return this;
}
@SuppressWarnings({"rawtypes", "unchecked"})
private WebResource.Builder createResourceBuilder() {
// convert parameters to a more convenient data structure
final MultivaluedMap<String, String> map = new MultivaluedMapImpl();
if (entity instanceof MultivaluedMap) {
map.putAll((Map) entity);
}
// create the resource
WebResource resource = client.resource(uri);
if (responseMapper.isResponseInterpreted(uri, method)) {
resource.addFilter(new GZIPContentEncodingFilter(false));
}
// set the parameters as either query parameters or as request body
final WebResource.Builder builder;
if (HttpMethod.DELETE.equalsIgnoreCase(method) || HttpMethod.HEAD.equalsIgnoreCase(method) || HttpMethod.GET.equalsIgnoreCase(method) || HttpMethod.OPTIONS.equalsIgnoreCase(method)) {
resource = resource.queryParams(map);
builder = resource.getRequestBuilder();
} else {
if (entity == null) {
builder = resource.entity(map);
} else {
builder = resource.entity(entity);
}
}
// set headers
boolean foundContentType = false;
for (final Map.Entry<String, String> entry : headers.entrySet()) {
builder.header(entry.getKey(), entry.getValue());
if (entry.getKey().equalsIgnoreCase("content-type")) {
foundContentType = true;
}
}
// set default content type
if (!foundContentType) {
// set default content type
builder.type(MediaType.APPLICATION_FORM_URLENCODED);
}
return builder;
}