package net.dahanne.spring.android.ch3.gzip; import org.springframework.http.ContentCodingType; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter; import org.springframework.web.client.RestTemplate; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final TextView resultTextView = (TextView) findViewById(R.id.result_text); AsyncTask<String, Void, IfConfigMeJson> simpleGetTask = new AsyncTask<String, Void, IfConfigMeJson>() { @Override protected IfConfigMeJson doInBackground(String... params) { // Add the gzip Accept-Encoding header HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.setAcceptEncoding(ContentCodingType.IDENTITY); //requestHeaders.setAcceptEncoding(ContentCodingType.GZIP); HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders); RestTemplate restTemplate = new RestTemplate(); MappingJacksonHttpMessageConverter mappingJacksonHttpMessageConverter = new MappingJacksonHttpMessageConverter(); restTemplate.getMessageConverters().add(mappingJacksonHttpMessageConverter); ResponseEntity<IfConfigMeJson> response = restTemplate.exchange(params[0], HttpMethod.GET, requestEntity, IfConfigMeJson.class); return response.getBody(); } @Override protected void onPostExecute(IfConfigMeJson result) { String resultAsString = new StringBuilder().append("We said we supported the following encoding for the response : ") .append(result.getEncoding()) .append("\n Here is your IP : ") .append(result.getIpAddr()).toString(); resultTextView.setText(resultAsString ); } }; String url = "http://ifconfig.me/all.json"; // triggers the task; it will update the resultTextView once it is done simpleGetTask.execute(url); } }