+1

Intercepting and Inspecting HTTP requests using Chuck

Introduction

Ever wanted a UI for the contents of your Http requests/response? Then Chuck is just what you need. It is a simple in-app Http inspector for Android OkHttp clients. Chuck intercepts and persists all HTTP requests and responses inside your very own application. Lets get started by creating a demo project. I have created one and named it ChuckDemo.

Step 1

Add Chuck Library to your gradle. build.graddle

 dependencies {
   debugCompile 'com.readystatesoftware.chuck:library:1.1.0'
   releaseCompile 'com.readystatesoftware.chuck:library-no-op:1.1.0'
 }

Now that we have imported out library we can make a simple http call to demo in the application.

Step 2

Add Http library to the project. (Note: You can use retrofit or volley or whatever suits you) build.graddle compile 'com.squareup.okhttp:okhttp:2.5.0'

Now we are all set and can make a simple call to monitor the http request/response. Open up the MainActivity.java and create a method that makes and http call.

MainActivity.java

package com.example.pane.chuckdemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.readystatesoftware.chuck.ChuckInterceptor;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        makeHttpCall();
    }

    private void makeHttpCall() {
        OkHttpClient client = new OkHttpClient.Builder()
            .addInterceptor(new ChuckInterceptor(this))
            .build();
        Request request = new Request.Builder()
            .url("http://www.vogella.com/index.html")
            .build();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, final Response response) throws IOException {
                if (!response.isSuccessful()) {
                    throw new IOException("Unexpected code " + response);
                } else {
                    // do something wih the result
                }
            }
        });
    }
}

Now we add permission to the Manifest file.

AndroidManifest

<uses-permission android:name="android.permission.INTERNET"/>

Run the app and you wilkl notice the check notification at the notification bar on the top of the device scree. Refer video below for demo.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.