How to uncompress (inflate) gzip REST Api response?

Ten Stars

How to uncompress (inflate) gzip REST Api response?

Hi

 

Would love to know how to decompress / uncompress (inflate) gzip String?  Please : Without saving it as a zip file.

It's response of a rest-api call UTF-8 compressed 

Would be nice if there are some functions related to string-handling: package (doc) util.java zip


cheers + thanks!

 

 

Forteen Stars

Re: How to uncompress (inflate) gzip REST Api response?

@Dijke,you can use tFileArchive and tFileUnarchive ,Folder to zip and unzip.

please find the below links

https://help.talend.com/reader/iYcvdknuprDzYycT3WRU8w/4HqSCsyne6rLWociYNchDQ

https://help.talend.com/reader/WWQ40R_iTE5~~9VkUQrjgQ/7Bj99i9HHD~wcAItQuK9Zw

Manohar B
Don't forget to give kudos/accept the solution when a replay is helpful.
Ten Stars

Re: How to uncompress (inflate) gzip REST Api response?

@manodw , sorry, but not a proper solution. very inefficient! 

 

I get a server response (gzip) -> (allready in memory) -> disk i/o-> fileOut ->  fileIn -> disk i/o -> (unzip process) ->  back in memory
should be server response (gzip) -> (allready in memory) -> decrypt bytes in memory -> save to db / disk i/o OR do whatever I wanna do.

 

 

Highlighted
Five Stars

Re: How to uncompress (inflate) gzip REST Api response?

Hi everyone,Capture.PNG

 

I'm facing exactly the same issue as @Dijke:

- I perform an API call through tRESTClient.
- The server's response has the header:     content-encoding: [gzip]
     -- So It's gzip compressed. The API documentation formally stipulate that clients has to activate gzip handling, because the response is always gziped.
- But tRESTClient's output schema has default values and the gzip content is cast as a string in the default field "string" Capture_2.PNG. As a result, I can not read the response. Here the tLogRow Output :

 

 

Does anyone has found a solution ? Thanks.

Tags (3)
Five Stars

Re: How to uncompress (inflate) gzip REST Api response?

Hi, I found a solution and here it is!

I've also opened a Jira ticket to report the issue: https://jira.talendforge.org/browse/TDI-41702, fell free to vote it up.

 

Here is a piece of Java code that inflat a GZIPed API response. For the demo I used StackExchange API which by default GZIP its reponses.

 

tJava Advanced Settings

import java.util.zip.GZIPInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.net.HttpURLConnection;
import java.net.URL;

tJava Basic Settings

// Ini API CALL
URL url = new URL("https://api.stackexchange.com/2.2/info?site=stackoverflow");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Test");

// Store ResponseCode
int status = con.getResponseCode();

// Inflat gzip stream (the API response content is gziped)
GZIPInputStream gzis = new GZIPInputStream(con.getInputStream());
InputStreamReader reader = new InputStreamReader(gzis);
BufferedReader in = new BufferedReader(reader);

// Send the output to next component, line by line
String readed;
while ((readed = in.readLine()) != null) {
//   System.out.println(readed);
	row2.content = readed;
}

 

Tags (2)
Four Stars

Re: How to uncompress (inflate) gzip REST Api response?

 

In Talend 7.1.1, the tESBConsumer component supports GZIP encoding.

What’s New for Talend Spring ’19

Join us live for a sneak peek!

Sign up now

Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.

Download

Tutorial

Introduction to Talend Open Studio for Data Integration.

Watch

Downloads and Trials

Test drive Talend's enterprise products.

Downloads