• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Compressed data from request

 
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:
Hi all. I call a webservice in java and i get a response but it comes garbled. Someone said it may be compressed with gzip. How do i uncrompress it?
Thanks
 
Marshal
Posts: 4525
572
  • Number of slices to send:
    Optional 'thank-you' note:
Check the HTTP response headers so that you know what you are getting.

Content-Type: what kind of content/resource is being returned (before any encodings) - text, image, binary blob, etc.
Content-Encoding: what kind of encoding (typically compression) have been applied to the content - gzip, deflate, etc.
Transfer-Encoding; similar to Content-Encoding, but applied on a hop-by-hop basis; may also indicate that the content is being transferred in chunks
 
Ron McLeod
Marshal
Posts: 4525
572
  • Number of slices to send:
    Optional 'thank-you' note:
Also, decompression is often done in the HTTP client library for you.  Which library are you using?
 
Ricardo Carvalho
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:

Ron McLeod wrote:Also, decompression is often done in the HTTP client library for you.  Which library are you using?


Spring i think.. and JDK 17
The content says gzip
 
Ron McLeod
Marshal
Posts: 4525
572
  • Number of slices to send:
    Optional 'thank-you' note:

Ricardo Carvalho wrote:Spring i think..


You probably need to sort that out to move forward.

If you can share some example code, maybe someone can figure out what you are using.
 
Ricardo Carvalho
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:

Ron McLeod wrote:

Ricardo Carvalho wrote:Spring i think..


You probably need to sort that out to move forward.

If you can share some example code, maybe someone can figure out what you are using.



Yes, i was writting on mobile phone.
Just for a little context, i'm calling an API from a game, and this is what i call:
  http://api.planets.nu/games/list?username=wasp
If i put that on the browser i get a json:
[{"name":"Athos IV Sector Campaign","description":"No wasp, Max advantage 600, planets limit ships 20\/1\/0, fog of war, blinded scores, random spaced home worlds, low minerals. Allies 0, Share Intel 1, Safe Passage 1. Host 2\/week.","shortdescription":"Custom Game","status":2,"datecreated":"5\/12\/2023 12:45:03 PM","dateended":"1\/1\/0001 12:00:00 AM","maptype":3,"gametype":2,"wincondition":1,"difficulty":1.9214988730278,"tutorialid":0,"requiredlevelid":7,"maxlevelid":0,"masterplanetid":172,"quadrant":0,"mintenacity":0,"faststart":10,"turnsperweek":0,"yearstarted":149,"isprivate":false,"scenarioid":0,"createdby":"smi","turn":15,"slots":11,"turnstatus":"1_34_6789AB","hostdays":"__T__F_","slowhostdays":"__T__F_","hosttime":"22:00","lastbackuppath":"d:\\planetsdata\\backups\\game563278\\turn14-638409052648798010.zip","nexthost":"1\/19\/2024 10:00:00 PM","allturnsin":fals......

If i do this code:

package com.example.consumingrest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Profile;
import org.springframework.web.client.RestTemplate;


@SpringBootApplication
public class ConsumingRestApplication {

private static final Logger log = LoggerFactory.getLogger(ConsumingRestApplication.class);

public static void main(String[] args) {
SpringApplication.run(ConsumingRestApplication.class, args);
}

@Bean
public RestTemplate restTemplate(RestTemplateBuilder builder) {
return builder.build();
}

@Bean
@Profile("!test")
public CommandLineRunner run(RestTemplate restTemplate) throws Exception {
return args -> {
String ret  = restTemplate.getForObject(
"http://api.planets.nu/games/list?username=wasp",String.class);

log.info("RESULTADO:   " + ret);

};
}

}

I get this

 : RESULTADO:    $K�e ��Vko�6�+w��9zX�$� ���4���. Z�-���T\o��!��y��2`� �0��<�<��� $�xP�Q�^�FW��J�%�z&v���J��
%a�Zў�>�W� ���I�v�QR�2ɭ�Vt’iDo(�Vg�� �[�#���i�
Y�L�47!i&kՑ�Y��Fu��J�5�Z��NH�YkftѶ�B���iN/��-�X�-���WM<�_��������� �(m�r9���8``�LP&�Y^i��f@�$JR��r��QJo_�w}�*ی��E>t�:��C��0�!ո@��������Nl��Z{�rV$���e

If i try with python, it uncompress automatically
Is this enough? what else do you need?

Thanks
 
Ricardo Carvalho
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:
I should have posted the real output. sorry.
Oh, and i'm using InteliJ
rest_webservice_gzip.png
 
Saloon Keeper
Posts: 27851
196
  • Number of slices to send:
    Optional 'thank-you' note:
"Real" output for us would be preferably text cut-and-paste, not screenshots. Screenshots should be avoided as they eat up storage space on our servers, are often hard to read at different user's screen resolutions and don't show up for reference when we're editing our replies.

Another thing that makes things more readable for us is if you use Code tags to wrap pre-formatted code such as Java source, XML or SQL.  The "Code" button on the message editor will create Code tags for you.

Yes, that server says that it will accept gzip-compressed data requests and it has returned a gzip-compressed data response. So you need to ensure that either the method you used to make the ReST request has built-in gzip decompression turned on (if available), or alternatively, gunzip the data yourself.
 
Ricardo Carvalho
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:
Sorry. Didnt know those rules. Will watch out next time.
About the issue, i have tried to put on file but gunzip wont recognise it.
Do you have a java example that works? It can be any library.
Thanks
 
Ron McLeod
Marshal
Posts: 4525
572
  • Number of slices to send:
    Optional 'thank-you' note:
This is what the response headers look like:
I would expect that Spring RestTemplate client API/library supports automatically decompressing gzip'ed content for you, but I don't use Spring, so I don't know if this is something that you need to configure (or even if it is available at all).  Hopefully someone that works with Spring can help answer that.

In the non-Spring environments that I have worked with, either the HTTP client took care of this for me, or I had to add a filter to the web server using GZIPInputStream.

 
Ron McLeod
Marshal
Posts: 4525
572
  • Number of slices to send:
    Optional 'thank-you' note:
Here's an example of how to decompress with GZIPInputStream (I am using the built-in HTTP client).  If you cannot find a built-in capability with RestTemplate, maybe you could do something like this.

Note: this is proof-of-concept code - I didn't pay any attention to exceptions, closing resources, etc.

 
Ricardo Carvalho
Greenhorn
Posts: 6
  • Number of slices to send:
    Optional 'thank-you' note:
Thank you very much.

That worked beautifully. Couldn't have done without you.

You guys rock.

Now i'll try to understand better the code you wrote. And try to find why mine didn't work.
I wish Java could simplify things . Other languages are much simpler.
reply
    Bookmark Topic Watch Topic
  • New Topic
vceplus-200-125    | boson-200-125    | training-cissp    | actualtests-cissp    | techexams-cissp    | gratisexams-300-075    | pearsonitcertification-210-260    | examsboost-210-260    | examsforall-210-260    | dumps4free-210-260    | reddit-210-260    | cisexams-352-001    | itexamfox-352-001    | passguaranteed-352-001    | passeasily-352-001    | freeccnastudyguide-200-120    | gocertify-200-120    | passcerty-200-120    | certifyguide-70-980    | dumpscollection-70-980    | examcollection-70-534    | cbtnuggets-210-065    | examfiles-400-051    | passitdump-400-051    | pearsonitcertification-70-462    | anderseide-70-347    | thomas-70-533    | research-1V0-605    | topix-102-400    | certdepot-EX200    | pearsonit-640-916    | itproguru-70-533    | reddit-100-105    | channel9-70-346    | anderseide-70-346    | theiia-IIA-CIA-PART3    | certificationHP-hp0-s41    | pearsonitcertification-640-916    | anderMicrosoft-70-534    | cathMicrosoft-70-462    | examcollection-cca-500    | techexams-gcih    | mslearn-70-346    | measureup-70-486    | pass4sure-hp0-s41    | iiba-640-916    | itsecurity-sscp    | cbtnuggets-300-320    | blogged-70-486    | pass4sure-IIA-CIA-PART1    | cbtnuggets-100-101    | developerhandbook-70-486    | lpicisco-101    | mylearn-1V0-605    | tomsitpro-cism    | gnosis-101    | channel9Mic-70-534    | ipass-IIA-CIA-PART1    | forcerts-70-417    | tests-sy0-401    | ipasstheciaexam-IIA-CIA-PART3    | mostcisco-300-135    | buildazure-70-533    | cloudera-cca-500    | pdf4cert-2v0-621    | f5cisco-101    | gocertify-1z0-062    | quora-640-916    | micrcosoft-70-480    | brain2pass-70-417    | examcompass-sy0-401    | global-EX200    | iassc-ICGB    | vceplus-300-115    | quizlet-810-403    | cbtnuggets-70-697    | educationOracle-1Z0-434    | channel9-70-534    | officialcerts-400-051    | examsboost-IIA-CIA-PART1    | networktut-300-135    | teststarter-300-206    | pluralsight-70-486    | coding-70-486    | freeccna-100-101    | digitaltut-300-101    | iiba-CBAP    | virtuallymikebrown-640-916    | isaca-cism    | whizlabs-pmp    | techexams-70-980    | ciscopress-300-115    | techtarget-cism    | pearsonitcertification-300-070    | testking-2v0-621    | isacaNew-cism    | simplilearn-pmi-rmp    | simplilearn-pmp    | educationOracle-1z0-809    | education-1z0-809    | teachertube-1Z0-434    | villanovau-CBAP    | quora-300-206    | certifyguide-300-208    | cbtnuggets-100-105    | flydumps-70-417    | gratisexams-1V0-605    | ituonline-1z0-062    | techexams-cas-002    | simplilearn-70-534    | pluralsight-70-697    | theiia-IIA-CIA-PART1    | itexamtips-400-051    | pearsonitcertification-EX200    | pluralsight-70-480    | learn-hp0-s42    | giac-gpen    | mindhub-102-400    | coursesmsu-CBAP    | examsforall-2v0-621    | developerhandbook-70-487    | root-EX200    | coderanch-1z0-809    | getfreedumps-1z0-062    | comptia-cas-002    | quora-1z0-809    | boson-300-135    | killtest-2v0-621    | learncia-IIA-CIA-PART3    | computer-gcih    | universitycloudera-cca-500    | itexamrun-70-410    | certificationHPv2-hp0-s41    | certskills-100-105    | skipitnow-70-417    | gocertify-sy0-401    | prep4sure-70-417    | simplilearn-cisa    |
http://www.pmsas.pr.gov.br/wp-content/    | http://www.pmsas.pr.gov.br/wp-content/    |